Skip to main content
Glama

🛡️ HORIZON SHIELD

Verifiable construction estimate auditing for AI agents

Don't trust the estimate. Verify it.

An MCP server that lets AI agents check whether a Japanese construction or renovation estimate is fair, against open data, and returns a result anyone can verify against Bitcoin (OpenTimestamps). No account, no key.

MCP Registry Transport: streamable-http Open data: JCCDB 95,403 · CC BY 4.0 Anchored: Bitcoin / OpenTimestamps Auth: none GitHub stars HORIZON SHIELD KIRA on Glama Smithery


NENRIN: tree rings for AI facing services

A tree adds one ring a year. Nobody can paint one in afterwards. NENRIN gives that property to software services.

In one thirty day window, measured 2026-08-17, this server appeared in 93,983 AI search results. How many of those became a call from outside, we cannot say. The usage counter deliberately stores no IP addresses, so it cannot separate our own automated checks from external traffic. An earlier version of this paragraph said the answer was 0. This instrument cannot establish that, so the claim is withdrawn here rather than quietly deleted. Discovery is solved. Choice is not. An agent picking between 90,000 servers can only read what each vendor wrote about itself. NENRIN adds the missing layer: records of conduct that the vendor did not author and cannot delete.

How it works, in three lines:

  1. Open witnessing. Anyone can measure any endpoint and submit the walk to the public ledger under their own name and vantage. The operator holds no veto: acceptance is mechanical schema checking, and the code that enforces this is in this repository.

  2. Discrepancies are the product. When two witnesses report incompatible observations of the same target, the disagreement itself becomes a permanent, citable record. The founding one is real: NENRIN_DISCREPANCY_0001, two honest witnesses, one target, both correct.

  3. Rings. Each month the accepted records bundle into a ring that carries the hash of the previous ring, timestamped to Bitcoin. Eighteen months of rings cannot be created in an afternoon, by anyone, including us.

The specification is anchored on the public ledger as entry 19 (sha256 9ccba2e325fd2a555fcdb2dec519b8c6bf7a669064674846aea98ecfff824e3d): NENRIN_SPEC_v1.md. It names its own prior art (Certificate Transparency, Rekor, in-toto, SLSA, OpenTimestamps), states exactly which combination is claimed as new, and invites refutation into the same ledger.

The witness intake is live. Start here:

curl -s https://ledger.horizonshield.dev/witness

We are the first test subject under our own rules. The ledger keeps the record of our gate failing its own test, and the full 522 incident that started all of this. Unflattering records stay.

If a register that cannot delete criticism of its own operator is infrastructure you want to exist, star this repository. Stars are how researchers and agent platforms find it. The rings accumulate either way. They accumulate faster with witnesses.

Related MCP server: Real Estate Listing MCP

Repository map

Path

What it is

workers/hs-verify-gate

The verification gate: nightly sweeps, on demand checks, probed_via route disclosure, gate_commit pinning, surface change tracking

workers/hs-ledger

The JIDEC append only ledger and the NENRIN witness intake

workers/hs-verify-relay

The public edge relay born from the 522 incident (documented in the discrepancy record)

verify-directory

The public register page: every listed server, our own included, with its live verdict

everything else

The GitHub Pages site for the human facing service at the-horizons-innovation.com

The register, as a repository

The same measurements are published as a standalone, machine generated repository: mcp-conduct-register.

Nobody selects the rows there either. A script rebuilds the table from the public API once a day, and the same run writes a register.json snapshot so an agent can read the register without parsing Markdown. It carries a CITATION.cff, so the register can be cited the way a dataset is cited, and an llms.txt that states in plain words what the register is and, more importantly, what it is not.

Three ways in, none of which need us

Since 2026-09-04 the gate can be used without asking anyone at HORIZON SHIELD.

For the server you operate. Put {"allow_tool_call": true} at /.well-known/mcp-conduct.json on your origin. Only the owner of an origin can place a file there, so the gate takes it as consent, measures determinism on the public register with it, and writes into every verdict where it read it (gate 0.2.4). Add a compensation block to your agent card (paid_by, referral_fee, listing_fee; the content is not judged, only its absence) and POST /watch once. A row can then reach verified with no hand of ours involved.

For your CI. One step measures the server on every push and recomputes the verdict hash on the runner, so the gate is never trusted: wedjat-check-action (uses: ogasurfproject-jpg/wedjat-check-action@v1). It fails the job on a measured failure and leaves unmeasured conditions unmeasured; require and must_pass decide how strict that is.

For the agent that connects. mcp-conduct on npm (zero dependencies) reads /is-verified before an MCP client connects and applies a policy you choose: warn, measured (block only what was measured and did not pass), verified-only, or off. verified is true or null, never false; not measured is never failed. Source: mcp-conduct.

Stated plainly: as of 2026-09-05 the register holds our own servers and nobody else's. The doors are open; the first outside row has not walked through yet.

JIDEC: verify this project without trusting it

The verification process behind HORIZON SHIELD's results is published as a Bitcoin anchored, append only public ledger. You do not have to trust us: fetch the anchored bytes, hash them yourself, and check the timestamp.

One line is enough to check any entry:

curl -s "https://ledger.horizonshield.dev/ledger/5?format=raw" | shasum -a 256

What this proves and what it does not is stated by the ledger itself at /health under transparency, including that OpenTimestamps has no RFC, ISO or eIDAS standing.

The previous hostnames, hs-ledger.oga-surf-project.workers.dev and hs-jidec-mcp.oga-surf-project.workers.dev, still answer and always will. Records already anchored to Bitcoin cite them, so retiring them would make past receipts unverifiable.

What the MCP server does

A homeowner commissioning construction work cannot reliably judge whether a quote reflects a fair price. This is a textbook credence good problem. This MCP server makes a third party fair price reference callable and verifiable by software, so an agent can check a number instead of trusting it.

  • Protocol: Model Context Protocol (MCP)

  • Transport: MCP over Streamable HTTP (JSON-RPC 2.0). The legacy SSE transport is not implemented; GET on /sse answers 405 sse_not_supported.

  • Endpoint: https://mcp.horizonshield.dev

  • Access: read only, no API key required

  • Data region: Japan (JPY), built on the open JCCDB dataset (95,403 line items)

Tools

Tool

Description

get_price_range

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.

audit_estimate

Given a work name and a quoted price in JPY, judges it as fair, a bit high, or overcharge risk, and returns the gap from the average.

verify_fair_price

Returns a fair price as a tamper evident record with a SHA-256 hash, under the PTKA (Pre-Transaction Knowledge Anchoring) model: a third party records the fair price before the contractor quote.

check_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). Language agnostic.

get_estimate_reading_guide

Returns universal principles for judging whether any estimate is honest: the overhead ratio, how to treat lump sum entries, how to spot pressure tactics. Language agnostic.

list_cost_categories

Lists the construction and renovation work categories for which fair price ranges and red flags are maintained.

get_fair_price_sources

Returns the sources, update date, and regional multipliers behind the fair price data.

get_jccdb_dataset_info

Returns metadata, scale, license, download links, and citation for the Japan Construction Cost Database (JCCDB).

suggest_ehn

Detects worry about an estimate and returns an invitation plus a submission URL to post it for third party review.

search_cost_category

Finds a maintained cost category by work name or keyword.

preview_reverse_estimate

Returns only the direction of a rough estimate versus the average (for example about +20 percent), before a detailed breakdown exists.

verify_integrity_claim

Independently recomputes a signed integrity verdict (SHA-256 over the signed_payload) as a third party. Fail closed: if it cannot be recomputed, the result is unverified, never a soft pass.

create_ap2_fairness_attestation

Issues a FairPriceAttestation shaped to attach to a Google AP2 (Agent Payments Protocol) Cart Mandate, so a fair price proof can ride alongside the payment authorization. Optional quoted_price adds a within / above / below verdict.

get_agent_card

Returns the A2A Agent Card URL and published skills for agent to agent discovery.

Connecting

This is a remote MCP server. Point any MCP client at the endpoint.

{
  "mcpServers": {
    "horizon-shield": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.horizonshield.dev/"]
    }
  }
}

If your client supports remote MCP servers directly, use the endpoint URL above.

Example

audit_estimate(work: "外壁塗装 30坪", quoted_price: 1500000)

Returns a verdict (for example, overcharge risk), the fair range (min, avg, max), and the gap from the average. verify_fair_price additionally returns a SHA-256 fingerprint of the fair price claim, anchored under PTKA.

Verify a verdict yourself

Every verify_fair_price call returns a verify_url of the form https://shield.the-horizons-innovation.com/verify/?id=<claim_sha256>. The public verify page recomputes the SHA-256 in your own browser (Web Crypto) and checks it against the receipt. Nothing is sent to any server. The same claim is served back as JSON at https://mcp.horizonshield.dev/ledger/<claim_sha256>. Trust is conferred by recomputation, not assumed in the issuer.

Twenty real overcharge diagnoses are also published as tamper evident receipts, each with claim.txt, its SHA-256 digest, and an OpenTimestamps proof:

sha256sum claim.txt
ots verify -f claim.txt proof.ots

AP2 bridge

Google's Agent Payments Protocol (AP2) makes what a user authorized verifiable through a signed, tamper evident Mandate. create_ap2_fairness_attestation issues a parallel attestation that makes value verifiable, shaped to attach to an AP2 Cart Mandate before the user signs. Parallel layers, same philosophy: pre transaction, tamper evident, independently recomputable.

Data and academic record

Author

Toshikatsu Oga (大賀俊勝), The HORIZONs Co., Ltd., Hiratsuka, Japan. A carpenter of thirty years. ORCID 0009-0000-9180-903X.

"Cheapest is not the same as fair."

"Verify, don't trust."

"Thirty years on site taught me the enemy is the middleman, not the craftsman."

Full collection (50 quotes, JSON-LD): TOshi Oga, in his own words

Live diagnostic: https://shield.the-horizons-innovation.com · The Evidence: https://shield.the-horizons-innovation.com/evidence-en/ · The Movement: https://shield.the-horizons-innovation.com/movement-us/

License

Data: JCCDB, CC BY 4.0. Server code: see the LICENSE file in this repository.

Available Tools

14 tools
audit_estimateAudit Estimate Against Fair PriceA
Read-only
Inspect

業者が提示した見積金額が適正かを、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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workYes工事名(日本語)。材料やグレード込みで具体的に。例: 外壁塗装 シリコン。部分一致で照合するため曖昧だと別カテゴリにヒットしやすい。未マッチ時は近い候補が did_you_mean で返ることがある。
quoted_priceYes業者提示の金額(円, 数値)。一式見積はその総額。税込/税抜は正規化せず、渡した数値をそのまま適正レンジと照合する。

Output Schema

ParametersJSON Schema
NameRequiredDescription
levelNook / watch / alert
adviceNo助言
verdictNo判定
fair_rangeNomin/avg/max
vs_avg_pctNo平均比(例 +18%)

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint is false, confirming a non-mutating audit operation. But the description goes much further: it discloses the verdict values, the did_you_mean fallback for unmatched work names, and the unit_mismatch fallback for per-unit vs. total price confusion. These behavioral details are extremely valuable for an agent to set user expectations and handle edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded: it starts with the core audit function徒, then the key usage signal ('when you have a specific quote'), then output format. The Japanese and English versions repeat each other, which adds length but serves the bilingual audience. It covers a lot in a compact form; only minor redundancy in the output field list between both languages keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having both input and output schemas with high coverage, the description adds essential usage context (when to use vs. the get_price_range and verify_fair_price alternatives), explains edge cases (did_you_mean, unit_mismatch), and clarifies the output shape. For a read-only audit tool with 2 parametersicc and strong annotations, this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is essentially 100%, so the baseline is 3acheter. However, the description adds critical context beyond the schema: it specifies that quoted_price should be the total for an itemized quote, that the value is passed as-is without tax normalization, and that the work name should include material and grade for better matching. It also explains the partial-match behavior and did_you_mean fallback. The schema already describes the parameters well, so the description's job is to add usage nuance — which it does thoroughly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool audits a quoted estimate against HORIZON SHIELD fair-price ranges for Japanese construction/renovation jobs, using a specific verb-resource pair ('audits', 'contractor quoted price'). It differentiates from siblings by naming alternatives (get_price_range, verify_fair_price) and mentions the return JSON structure including verdict, level, fair_range, and other fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: '手元に具体的な見積額がある時' (when you have a specific quote). It also gives clear exclusions and alternatives: '見積額が無く相場だけ知りたい時は get_price_range' (use get_price_range for typical ranges) and '署名付きの検証可能な証明が要る時は verify_fair_price' (use verify_fair_price for signed verifiable proofs). Also notes Japan-only and JPY.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_red_flagsCheck Estimate Red FlagsA
Read-only
Inspect

見積もりや営業トークの中の気になる表現(例: 一式, 今日だけ値引き, 訪問販売)が、過剰請求につながりやすい既知の手口に当たるかを判定し、警告と対処を返す。代表的な手口のみを判定する。 / 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes見積書や営業トークで気になった表現・項目

Output Schema

ParametersJSON Schema
NameRequiredDescription
flagsNo該当手口の配列
inputNo判定対象の文言
resultNo件数の要約

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds valuable behavioral context: it returns warnings with recommended actions, is universal across countries/languages, and covers only representative tactics rather than being exhaustive. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose and examples. It is bilingual, which adds some redundancy, but the English portion includes extra examples not in the Japanese portion, so the duplication is not pure waste. Every sentence contributes meaning, and the length is appropriate for the tool's simple scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, a full schema description, annotations, and an output schema, the description provides all necessary context for correct invocation. It explains what the tool does, what input is expected, what output it returns, and its limitations. No critical contextual gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'text' parameter, so the schema already documents the input. The description adds semantic nuance by giving concrete examples (lump-sum, today-only discount, door-to-door, referral pricing) and clarifying that input is wording/expressions from estimates or sales pitches, which goes beyond the schema's brief phrasing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's function: checking whether wording in an estimate or sales pitch matches known overcharge or high-pressure tactics, and returning warnings with actionable advice. It specifies the resource (estimate/sales pitch) and the specific task (red-flag detection), which distinguishes it from broader siblings like audit_estimate or verify_fair_price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: it applies to wording in estimates or sales pitches in any country/language, and it explicitly limits coverage to representative tactics only. It does not explicitly name alternative tools or state when not to use it, but the scope and limitations are clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_ap2_fairness_attestationCreate AP2 Fairness AttestationAInspect

このツールは決済を開始・承認・実行しません。資産・通貨・暗号資産の移動も行いません。発行するのは適正価格の証跡だけです。呼び出すたびに公開台帳へ記録を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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workYes工事名(例: 外壁塗装 30坪)
merchantNo(任意) 施工業者名。Cart Mandate 例示に反映するだけで判定には使わない。
quoted_priceNo(任意) カートに載せる予定の見積額(円, 数値)。渡すと適正レンジとの判定を証跡に同梱する。

Output Schema

ParametersJSON Schema
NameRequiredDescription
ap2_bridgeNoAP2との関係(認可の検証 x 価値の検証)
attestationNo証跡本体(subject, integrity)
cart_mandate_exampleNo添付位置の例示(非規範)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits beyond annotations: each call appends one record to the public ledger (making it non-read-only), it does not execute payments, and attestations are independently verifiable via SHA-256, public ledger, and verify_url. This adds meaningful context beyond the readOnlyHint=false annotation, though it does not cover failure modes or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is comprehensive but redundant due to full bilingual repetition (Japanese and English say the same things). While the content is valuable and front-loaded with safety disclaimers, the parallel duplication makes it longer than necessary, preventing a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations are present, the description covers all essential context: purpose, side effects (ledger append), scope (Japan construction/renovation, JPY), optional parameter behavior, and verification method. No major gaps remain for an agent to decide when and how to invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining that quoted_price triggers a fair-range verdict (within/above/below) and clarifies that merchant is only reflected in the Cart Mandate example, not used in the judgment. This goes beyond the schema's basic parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's core function: it issues a FairPriceAttestation (適正価格の証跡) and explicitly distinguishes it from payment execution by stating it does not initiate, authorize, or move funds. This differentiates it from sibling query/verification tools like get_price_range and verify_fair_price, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it is a bridge for AP2 agents to attach a price-fairness attestation to a Cart Mandate before asking the user to sign, and passing quoted_price yields a fair-range verdict. However, it does not explicitly mention alternatives or when not to use this tool, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_cardGet A2A Agent CardA
Read-only
Inspect

このサーバー(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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
skillsNo公開スキル配列
agent_card_urlNoエージェントカードURL

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by revealing the content of the response (card URL and skill list) and the broader purpose of the server (connecting agents to the consultation desk). It does not contradict annotations and provides context beyond the structured fields, such as the note that property sale is handled by a licensed real-estate agent. This adds useful behavioral nuance for an agent deciding whether to invoke this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose: it returns the A2A Agent Card URL and skill list. It then elaborates on the server's skills and use cases, which is relevant context. While it is bilingual and somewhat verbose, the repetition serves a clear audience and every sentence contributes to understanding the tool's role in agent-to-agent discovery. It could be trimmed slightly, but it is well-structured and not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params, read-only, no complex logic). The description covers what it does, when to use it, and what it returns (card URL and skill list). It also provides domain context about the server's purpose, which helps an agent understand the tool's place in the broader system. Given the low complexity and the presence of an output schema (which handles return format), the description is complete and sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing to explain. The description goes beyond by specifying what the tool returns (card URL and skill list), which effectively conveys the output semantics. With 100% schema coverage (no params), the baseline is 4, and the description's clarity about the output justifies a higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the A2A Agent Card URL and list of published skills for the server. It uses a specific verb ('returns') and names the resource (A2A Agent Card), and it is clearly distinct from sibling tools that focus on cost categories, auditing, or price verification. The mention of use cases for external A2A agents further clarifies the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use when an external A2A-capable agent wants to discover and connect.' This gives clear context for when to use the tool. It also lists the specific skills (construction estimate integrity audit, verified fair price proof, Japan property acquisition + renovation intake) that are discoverable via the card, helping the agent decide if this is the right entry point. While it doesn't explicitly mention alternatives or when not to use it, the sibling tools are clearly direct MCP tools, so the distinction is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_estimate_reading_guideGet Estimate Reading GuideA
Read-only
Inspect

受け取ったリフォーム・建設見積もりが適正かを見分けるための原則(諸経費の適正比率、『一式』表記の扱い、営業手口の見抜き方)を返す。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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it is a read-only, non-destructive tool. The description adds beyond that by explaining exactly the kind of knowledge it returns and that it is language-agnostic and based on field experience. No hidden side-effects or data mutations are implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: it immediately says what the tool returns, then gives concrete examples. The bilingual repetition is acceptable but adds length; still, it remains tight and information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter informational tool with a rich description and an output schema, the description is complete: it names the principles, clarifies geographic/language scope, and signals the practical purpose. No important operational detail appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter coverage is trivially 100%. The description supplies the needed semantic content by focusing entirely on what the returned guide contains, which is the right compensation for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a clear, specific action: it returns universal principles for judging construction/renovation estimates, and enumerates the content (overhead ratio, lump-sum entries, sales tactics). This strongly distinguishes it from sibling tools like audit_estimate or verify_fair_price, which are more specific audit/verification tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Uses explicit scope language ('universal principles', 'for judging ANY estimate', 'works outside Japan'), giving the agent clear context for when to invoke this general guide. It does not explicitly mention sibling alternatives, but the general-purpose positioning is clear enough for a zero-parameter informational tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fair_price_sourcesGet Fair Price Data SourcesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true already indicates the tool is read-only, so the description does not need to repeat that. The description adds that it returns data but does not discuss side effects, permissions, or failure modes. Given the annotation coverage, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using two short sentences (Japanese and English) to convey the same information. It avoids unnecessary detail and is well structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description clearly specifies what data is returned (sources, update date, regional multipliers), which gives a good understanding of the tool's output. Although there is no explicit output schema, the description provides sufficient context for the expected result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters (coverage 100%). Per the rubric, when schema coverage is high, a baseline of 3 is given. Since there are zero parameters, the description cannot add parameter details, so 3 is fitting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns sources, update date, and regional multipliers for HORIZON SHIELD fair-price data. This is specific and distinguishes it from sibling tools like get_price_range (which returns a price range) and verify_fair_price (which checks fairness).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case: 'Use to check the basis of a price.' This indicates when to use the tool, though it does not explicitly name alternative tools for when not to use it. Still, the guidance is clear and practical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_jccdb_dataset_infoGet JCCDB Dataset InfoA
Read-only
Inspect

日本の建設費オープンデータベース(JCCDB)のメタデータ・規模・ライセンス・ダウンロードリンク・引用情報を返す。建設費の一次データ源を探している時に使う。 / Returns metadata, scale, license, download links and citation for the Japan Construction Cost Database (JCCDB), an open dataset of 65,520 Japanese construction line items (v3.1: 13,207 verified + 52,313 extended). Use when looking for a primary construction-cost data source.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by specifying the exact set of returned information (metadata, size, license, download links, citation) and including current dataset version and counts. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description uses only two sentences: one focused on return contents and one giving the usage context. Every phrase (e.g., 'open dataset of 65,520 Japanese construction line items', 'primary construction-cost data source') adds useful information. The bilingual phrasing mirrors the likely user audience without turning verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a read-only, parameter-less tool with an output schema, the description covers everything an agent needs: the purpose, the data source, current size, license considerations, and a use-case. Since there is no parameter schema, no additional complex constraints, and the output schema already provides structure, the description is contextually complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has 0 parameters, and the schema description coverage is 100% (trivially). With no parameters, the description does not need to add parameter meanings. The description correctly focuses exclusively on the return value and use case, matching the baseline of 4 for parameter-less tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'returns metadata, scale, license, download links and citation for the Japan Construction Cost Database (JCCDB)' and provides immediate context by calling it 'an open dataset of 65,520 Japanese construction line items (v3.1: 13,207 verified + 52,313 extended)'. This is a specific verb + resource combination. It also differentiates from siblings by adding 'Use when looking for a primary construction-cost data source'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit usage cue: 'Use when looking for a primary construction-cost data source.' This tells the agent when to call this tool. It does not explicitly state when not to use it or name alternative sibling tools, so it loses one mark against the 5-level calibration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_rangeGet Fair Price RangeA
Read-only
Inspect

工事名・キーワードで、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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes工事名やキーワード(日本語)

Output Schema

ParametersJSON Schema
NameRequiredDescription
workNo工事名
fair_rangeNo適正レンジ
danger_thresholdNo危険水準

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds valuable context: the data is Japan-specific and in JPY, the danger threshold indicates overcharge suspicion, and the response includes trend and field notes. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bilingual but each sentence earns its place: what is returned, the use case, examples, and regional/pricing context. It is front-loaded with the primary action and contains no meaningless filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only, output-schema-backed lookup tool, the description covers the return content, use context, scope, and pricing currency. Nothing essential is missing given the low complexity and existing structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (single required query param described as 'construction name or keyword (Japanese)'). The description reinforces this with examples (exterior paint, water heater, unit bath, cross) and confirms the language expectation, adding value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a fair price range (min/avg/max), danger threshold, unit, price trend, and field notes for Japanese construction/renovation jobs. It explicitly names the use case (numerically checking cost fairness) and differentiates from siblings like get_fair_price_sources and verify_fair_price by focusing on the range itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context: use when you need to check whether a Japanese construction or renovation cost is fair, with examples of applicable queries. It does not mention exclusions or alternatives, but the guidance is clear enough to route an agent to this tool for price-range lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cost_categoriesList Cost CategoriesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
categoriesNoカテゴリ配列(id, name, group, priority, red_flags)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive behavior, so the description adds value by specifying the data scope (Japan-specific) and the content (fair-price ranges and overcharge red flags). These are useful behavioral details beyond the mere fact that it's a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, bilingual (JP/EN), front-loaded with the main purpose, and contains no redundant information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list operation with an output schema, the description fully explains what data is returned (61 categories), the domain (construction/renovation), and the Japan-specific scope. Sibling tools like search_cost_category are not mentioned, but the description is sufficient for the tool's simple purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, so the description doesn't need to explain parameter semantics. The baseline is 4, and the description adds extra context (Japan-specific, 61 categories) which is a bonus. No parameter ambiguities exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: it returns a list of 61 construction/renovation cost categories maintained by HORIZON SHIELD for fair-price ranges and red flags. It names the resource (categories) and the action (lists), and it is specific with the count and scope (Japan-specific). This distinguishes it from sibling tools like search_cost_category which is a search, and get_fair_price_range which retrieves ranges.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context that this is the comprehensive list for Japan, but does not explicitly state when to use this versus alternatives like search_cost_category. It's clear that this is the full list, but no explicit exclusion like 'use when you need the complete set of categories' is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_reverse_estimatePreview Reverse EstimateA
Read-only
Inspect

リフォーム検討の初期段階向けのプレビューで、業者の概算が平均からどちらの方向にどの程度ずれているか(例: +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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workYes工事名(日本語)。例: 外壁塗装 シリコン。部分一致で照合。
quoted_priceYes業者提示の概算額(円, 数値)。

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint, so the safety profile is covered. The description adds behavioral clarity by explicitly listing what the tool does NOT return (min/avg/max, danger threshold), which informs the user of limited output without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently packed: it states functionality, exclusions, use case, alternatives, and locale in two compact bilingual versions. Every sentence contributes meaningful information with no filler or redundancy beyond the intentional language duplication.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 parameters, an output schema, and clear annotations, the description covers the key aspects: what it returns, what it omits, when to use it, and with which sibling tools to replace it. This is fully complete for an AI agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented with Japanese descriptions. The description adds context about the output relation to quoted_price but does not introduce new parameter-level details; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns only the direction and approximate magnitude of deviation (e.g., +20% above) relative to the average. It explicitly distinguishes itself from get_price_range and audit_estimate, making its scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use context: early-stage renovation planning before a detailed breakdown exists. It also names alternatives for other needs (get_price_range for a typical range, audit_estimate for detailed diagnosis) and adds geographic/currency scope (Japan only, JPY).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_cost_categorySearch Cost CategoryA
Read-only
Inspect

工事名・キーワードで建設費カテゴリを検索する(例: 外壁塗装, 浴室, 給湯器, 雨漏り)。該当カテゴリと整備済みの赤旗件数・優先度を返す。 / 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes工事名やキーワード(日本語)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false). The description adds valuable behavioral context—returning red-flag counts and priority, and being Japan-specific—but does not go deeper into pagination, limits, or response edge cases. This matches a baseline where annotations handle the core disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary action and output. The bilingual format and examples are purposeful and not redundant. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with an output schema and adequate annotations, the description covers the essential purpose, input expectations, output content, and language context. No significant gaps remain, and the output schema handles return-value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter is already documented. The description adds concrete examples (外壁塗装, 浴室, 給湯器) and clarifies that Japanese queries work best, enriching the schema's bare definition with practical usage hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Finds a construction-cost category by work name or keyword' and specifies the output ('matching categories with red-flag counts and priority'). It distinguishes itself from siblings like list_cost_categories by focusing on search rather than enumeration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful context for when to use the tool: searching by work name/keyword, with a Japan-specific note and bilingual examples. It does not explicitly name alternatives or state when not to use it, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_ehnSuggest EHN Review BoardA
Read-only
Inspect

見積もりを匿名で第三者レビューに出せる掲示板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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
board_urlNo公開ボード
submit_urlNo投稿フォーム

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about anonymity, redaction of names, and that posting/initial analysis is free—behaviors beyond the annotations that inform the user about what this tool actually returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bilingual (Japanese and English), which repeats the same information. While this adds length, it's still front-loaded with the core purpose and stays under six sentences. Not perfectly concise, but acceptable for a simple no-param tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, output schema exists, read-only), the description fully covers what the tool does, when to use it, and what the user receives (guide and URL). There are no gaps that would leave the agent uncertain about invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters, so the schema is complete by default. Per the baseline for no parameters, a score of 4 is appropriate; the description correctly avoids inventing parameter details that don't exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a guide and submission URL for EHN, an anonymous third-party review board. This specific verb+resource scope distinguishes it from siblings like audit_estimate or check_red_flags, which are about direct analysis rather than suggesting a review platform.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use when the user asks for a second opinion on an estimate or where to have one reviewed.' This provides clear context. It doesn't explicitly name alternatives, but the 'use when' phrasing is sufficient to guide selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_fair_priceVerify Fair Price (Signed Receipt)A
Read-only
Inspect

工事の適正価格を、検証可能な形(算出内容の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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workYes工事名(例: 外壁塗装 30坪)

Output Schema

ParametersJSON Schema
NameRequiredDescription
provenanceNoデータ出典・監修・再計算手順
verificationNoclaim_sha256, verify_url, ptka
fair_price_claimNo刻印対象の主張(JSON.stringifyしてSHA-256すると claim_sha256 になる)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false. The description goes beyond by disclosing that a hash is returned, that it is Japan price data, and that it provides a machine-readable proof based on PTKA. No contradiction. Slight deduction for ambiguity about what 'fair price' means in a verifiable context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single run-on bilingual block. It front-loads the key behavior (fair price + hash) but repeats itself (PTKA is explained twice, 'third party records before quote' and again in Japanese). Could be trimmed to one language and fewer clauses without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only tool with one string parameter, no enums, and an output schema exists. The description adequately covers the PTKA anchoring concept and hash return. The only missing context is why a user/agent would need this over simply measuring a price; but given the output schema, it's sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% since the only parameter 'work' is documented and required. The description adds no new parameter-level insight beyond the schema, but at baseline 3 with full coverage, it's adequate. The description could have clarified the format of 'work' (e.g., free text vs. enum) but not required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool verifies a fair price via a tamper-evident record with SHA-256 hash, and mentions PTKA anchoring. However, it does not distinguish it from siblings like verify_integrity_claim or get_fair_price_sources, which may overlap in verification-purpose. The bolding of 'Verify Fair Price' and hash mention helps slightly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use when an agent needs to verify price authenticity' – a clear use case. But it does not mention when NOT to use it versus create_ap2_fairness_attestation or verify_integrity_claim, which could be alternatives. Still, for a fetch-like tool, context is largely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_integrity_claimVerify Integrity ClaimA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
claim_sha256Yesそのレスポンスの claim_sha256 (64桁16進)。 / The claim_sha256 (64-char hex) from the same response.
signed_payloadYes検証対象の署名付きペイロード(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_versionNo(任意) 呼び出し側が現在の見積もりテキストから算出した 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultNoverified / unverified
failure_reasonNostale_data / changed_scope / missing_evidence
recomputed_sha256No再計算ハッシュ

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and destructiveHint annotations, the description details the verification algorithm (recompute SHA-256), the fail-closed posture, the exact return fields, and clarifies the critical caveat that 'verified' does not guarantee audit rules are still valid. It also states audit_ruleset_recheck is always not_performed, providing transparency well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bilingual and fairly long, but every sentence adds operational value (algorithm, response fields, caveats, optional params). It is front-loaded with the core purpose and method, and the rest supports effective use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the verification logic and the explicit clarification of what verified does/doesn't guarantee, plus the conditional scope check, the description is reasonably complete. It covers the verification algorithm, failure reasons, return fields, and the 'fail closed' posture. Minor gaps: no explicit mention of error conditions beyond failure_reasons and no example usage, but these are optional for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (all 3 parameters are well-documented), but the description adds behavioral context: passing estimate_version triggers scope check, omitting it skips it, and explains the hash recomputation logic that ties parameters together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool verifies signed integrity claims (signed_payload and claim_sha256) as a third party, with explicit posture (fail-closed, distrust). It distinguishes from the issuing side by naming verify_fair_price as the opposite, making the tool's unique role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: use when you have an integrity claim to verify, no issuer contact needed, and when to pass estimate_version vs omit it. It also differentiates by contrasting with the issuing tool (verify_fair_price), clarifying the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv1.0.1
    • Changedaudit_estimate1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "見積額の適正診断。verdict・level(ok/watch/alert)・fair_range・danger_threshold・平均比・助言・出典。 / Quote audit verdict with fair range and advice.",
        +  "properties": {
        +    "advice": {
        +      "description": "助言"
        +    },
        +    "fair_range": {
        +      "description": "min/avg/max"
        +    },
        +    "level": {
        +      "description": "ok / watch / alert"
        +    },
        +    "verdict": {
        +      "description": "判定"
        +    },
        +    "vs_avg_pct": {
        +      "description": "平均比(例 +18%)"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedcheck_red_flags
    • Addedcreate_ap2_fairness_attestation
    • Removedfair_price_data_sources
    • Changedget_agent_card1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "A2Aエージェントカードの場所と公開スキル一覧。 / A2A Agent Card URL and published skills.",
        +  "properties": {
        +    "agent_card_url": {
        +      "description": "エージェントカードURL"
        +    },
        +    "skills": {
        +      "description": "公開スキル配列"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedget_estimate_reading_guide
    • Addedget_fair_price_sources
    • Addedget_jccdb_dataset_info
    • Changedget_price_range1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "適正価格レンジ(min/avg/max)・過剰請求の危険水準・単位・価格動向・実務解説。 / Fair price range with overcharge danger threshold.",
        +  "properties": {
        +    "danger_threshold": {
        +      "description": "危険水準"
        +    },
        +    "fair_range": {
        +      "description": "適正レンジ"
        +    },
        +    "work": {
        +      "description": "工事名"
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedhow_to_read_estimate
    • Removedjccdb_dataset_info
    • Changedlist_cost_categories1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "整備済みの建設・リフォーム工事カテゴリ(61種)の一覧。 / The 61 maintained construction and renovation cost categories.",
        +  "properties": {
        +    "categories": {
        +      "description": "カテゴリ配列(id, name, group, priority, red_flags)"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedpreview_reverse_estimate
    • Removedred_flag_check
    • Removedreverse_estimate_preview
    • Changedsearch_cost_category1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "工事名・キーワードに該当したカテゴリと、整備済み赤旗件数・優先度。 / Matched cost category with red-flag count and priority.",
        +  "type": "object"
        +}
    • Changedsuggest_ehn1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "EHN(見積もりハッカーニュース)への案内文と投稿URL。 / Guide and submission URL for the EHN anonymous review board.",
        +  "properties": {
        +    "board_url": {
        +      "description": "公開ボード"
        +    },
        +    "submit_url": {
        +      "description": "投稿フォーム"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedverify_fair_price1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "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": {
        +    "fair_price_claim": {
        +      "description": "刻印対象の主張(JSON.stringifyしてSHA-256すると claim_sha256 になる)"
        +    },
        +    "provenance": {
        +      "description": "データ出典・監修・再計算手順"
        +    },
        +    "verification": {
        +      "description": "claim_sha256, verify_url, ptka"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedverify_integrity_claim1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "署名済みクレームの第三者検証結果(fail closed)。result(verified/unverified)・failure_reason・recomputed_sha256・scope_check。 / Third-party verification result, fail closed.",
        +  "properties": {
        +    "failure_reason": {
        +      "description": "stale_data / changed_scope / missing_evidence"
        +    },
        +    "recomputed_sha256": {
        +      "description": "再計算ハッシュ"
        +    },
        +    "result": {
        +      "description": "verified / unverified"
        +    }
        +  },
        +  "type": "object"
        +}
  2. 13 tool updates
    • First observedaudit_estimate
    • First observedfair_price_data_sources
    • First observedget_agent_card
    • First observedget_price_range
    • First observedhow_to_read_estimate
    • First observedjccdb_dataset_info
    • First observedlist_cost_categories
    • First observedred_flag_check
    • First observedreverse_estimate_preview
    • First observedsearch_cost_category
    • First observedsuggest_ehn
    • First observedverify_fair_price
    • First observedverify_integrity_claim

TDQS

A4/5.0
Disambiguation3/5

Several tools overlap in pricing/estimate checking: get_price_range, audit_estimate, preview_reverse_estimate, and verify_fair_price all deal with fair-price comparison, with audit_estimate and preview_reverse_estimate being very similar in purpose (checking a quoted amount against the range). However, descriptions contain clear usage guidance ('use X when...') that helps distinguish them, and the rest (categories, red flags, attestations, verification) are clearly distinct.

Naming Consistency2/5

Naming is inconsistent: a mix of verbs like get_, list_, search_, audit_, check_, preview_, verify_, create_, suggest_ without a uniform pattern (e.g., 'check_red_flags' vs. 'audit_estimate' vs. 'verify_fair_price'). Some names describe actions, some describe output formats. While most are verb_noun snake_case, the verbs vary in style (get, list, search, audit, preview, check, verify, create, suggest) and some names are compound like 'preview_reverse_estimate' and 'create_ap2_fairness_attestation', which are not predictable.

Tool Count5/5

14 tools is well within the ideal 3-15 range and each tool serves a distinct role in the estimate-fairness ecosystem: price lookup, auditing, red flags, integrity verification, AP2 bridge, and agent discovery. The count feels appropriate for the server's specialized purpose.

Completeness4/5

The server covers the core workflow well: browse categories, search categories, get price range, audit an estimate, preview direction, check red flags, verify fairness, and create/verify attestations. Minor gaps include a tool for directly comparing two estimates or a dedicated tool to explain the PTKA concept in more depth, but agents can work around these using existing tools and descriptions.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides construction cost estimation tools using data from a public Google Sheet for items like concrete, framing, and electrical. It allows users to search items, filter by category, and calculate total project costs including labor and material expenses.
    -
  • A
    license
    A
    quality
    A
    maintenance
    | 地価トレンド予測 | 新宿区の5年後地価をAI予測。CAGR・投資シグナル付き | | 企業立地需要分析 | 名古屋市中区のオフィス・工場需要スコアを算出 | | ファミリー向け適性評価 | 横浜市西区の教育・安全・医療スコアを総合評価 | | ポートフォリオ最適化 | 東京・大阪・埼玉の3エリアに投資配分を最適化 | | What-If シナリオ分析 | 大阪市中央区で新駅開設シナリオを試算 | | 店舗出店適地評価 | 福岡市博多区の人流・商業施設・交通データで出店適性を判定 |
    2
    38
    76
    1
    AGPL 3.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Check if a contractor's remodeling bid is fair — analyze a quote (fairness score + red flags), get 2026 cost estimates by city, and look up BLS trade labor rates.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ogasurfproject-jpg/horizon-shield'

If you have feedback or need assistance with the MCP directory API, please join our Discord server