{"gate":"MCP Verification Gate","gate_version":"0.4.1","gate_commit":"a2c5fdf7d26c","endpoint":"https://mcp.horizonshield.dev/mcp","checked_at":"2026-09-08T23:42:10.563Z","reachable":true,"status":"verified","scope_note":"This gate verifies conformance and disclosure only. It does NOT verify that any price or figure returned by the server is correct. Price validation is a separate, paid tier and is currently available for Japanese construction only. By default this gate calls no tools on the server being checked, so determinism is reported as not measured rather than guessed. Send allow_tool_call true to have it measured on a server you control.","tools_called":"one tool, twice, with empty arguments, by consent","coordinate_derivation":{"schema":"nenrin-instant-v1","derived":true,"window_id":"w2957","salt_commitment":"ff57ab419114d900da6d74f6a7cdc475e04c78435521303497dd862a1bf4b733","salt_created_at":"2026-09-05T18:00:12.389Z","beacon":{"height":965808,"block_hash":"0000000000000000000217ec231db790d8ffea4328d608f7e4c7a56736d08eb1","block_time":"2026-09-06T17:06:00.000Z","sources":["mempool.space","blockstream.info","mempool.emzy.de"],"agreed_by":["mempool.space","blockstream.info","mempool.emzy.de"],"reference":{"rule":"tip ranked 2 of 3 (highest first) minus 6; with two sources that is min(tip) - 6","quorum":2,"tips":{"mempool.space":965814,"blockstream.info":965814,"mempool.emzy.de":965814}},"read_at":"2026-09-06T18:00:50.160Z"},"day_in_window":4,"window_days":7,"tool_set_sha256":"43ebcc8831d721c92c2a74d7a12e6c7259f2d0476aa18bf5cecd9cf259bc6f62","tool_count":14,"rule":"the measurement day and the tool order are HMAC-SHA256 derived from a salt the gate committed to before the window opened, bound to a Bitcoin block whose header time is at or after the salt's creation. The subject cannot predict them; the gate cannot choose them after the fact. The salt is served at /nenrin/window/{window_id} when the window closes, and anyone can recompute all of this.","limits":"Derivation is fair only inside the surface the subject declared. A tool never listed is never picked. That set is unknown, not absent. This measures conduct, not quality."},"consent_basis":"operator consent list (TOOL_CALL_CONSENT in the gate's source, published)","consent_source":"operator_list","probed_via":"relay (hs-verify-relay, a separate worker outside this zone path; the whole probe traverses the public edge, because a Worker invoked over HTTP cannot reach its own zone directly. Measured 2026-08-14/15)","checks":{"mcp_endpoint":{"pass":true,"reason":"MCP endpoint responds to initialize and tools/list","detail":{"initialize":true,"server_name":"horizon-shield","tool_count":14,"tools":["get_jccdb_dataset_info","list_cost_categories","search_cost_category","get_estimate_reading_guide","get_fair_price_sources","get_price_range","audit_estimate","preview_reverse_estimate","check_red_flags","verify_fair_price","create_ap2_fairness_attestation","suggest_ehn","get_agent_card","verify_integrity_claim"],"surface":{"complete":true,"pages_followed":1,"names_hash":"948ea269001311d8","manifest_hash":"2b3edd31ec46ca38","server_info_hash":"fcf4b56f3e1e03c7","tool_hashes":{"audit_estimate":"5d39fd670d3f74dc","check_red_flags":"3d16722682b78bbc","create_ap2_fairness_attestation":"90af58e00153a0ca","get_agent_card":"0acb3ef47f5b2be9","get_estimate_reading_guide":"8d5fbfa482552a3a","get_fair_price_sources":"68fd6dcadfa27f0e","get_jccdb_dataset_info":"797146b849b7a8ef","get_price_range":"c696d468a3111a13","list_cost_categories":"3c7b1f8fc27bc24c","preview_reverse_estimate":"2fd121c21003af13","search_cost_category":"f416ec60bd06020c","suggest_ehn":"984e3f48fb293801","verify_fair_price":"36cba70c911fdd86","verify_integrity_claim":"f6108bb73564cc44"},"canonicalization":"rfc8785-jcs","unsafe_integer_scan":"clean"},"callable_tools":["get_jccdb_dataset_info","list_cost_categories","search_cost_category","get_estimate_reading_guide","get_fair_price_sources","get_price_range","audit_estimate","preview_reverse_estimate","check_red_flags","verify_fair_price","create_ap2_fairness_attestation","suggest_ehn","get_agent_card","verify_integrity_claim"],"hollow_tools":0}},"agent_card":{"pass":true,"transport":false,"reason":"agent-card published and well-formed; signature verifies","detail":{"url":"https://mcp.horizonshield.dev/.well-known/agent-card.json","name":"HORIZON SHIELD KIRA","skills":3,"signature":{"present":1,"verified":true,"canonical_sha256":"311cb0a929f1947889e2f1e444375a094897cdbe2df9799706fccd6f2b70a97a","signatures":[{"kid":"hs-2026-09","jku":"https://mcp.horizonshield.dev/.well-known/jwks.json","alg":"ES256","verified":true,"reason":"signature verifies over the RFC 8785 canonical card (schema fields only; fields outside the A2A 1.0 schema are not covered)","jku_same_host":true}]}}},"compensation_disclosure":{"pass":true,"reason":"compensation structure declared","detail":{"paid_by":"buyer","referral_fee":false,"listing_fee":false,"success_fee_pct":0,"disclosure_url":"https://shield.the-horizons-innovation.com/verify-directory/","location":"both"}},"determinism":{"pass":true,"reason":"identical input returned identical output across 2 runs","detail":{"tool":"verify_fair_price","runs":2,"identical":true,"tried":[{"tool":"verify_fair_price","outcome":"identical across 2 runs"}],"tools_measured":1,"tools_unmeasured":13,"selection":"derived: the tool order is HMAC-SHA256 derived over the lexicographically sorted tool names, keyed by a salt the gate committed to before this window and bound to a Bitcoin block. The server cannot steer the pick by reordering its own tools/list. Up to 3 tools are tried in that derived order."}}},"absence_vs_failure":{"condition":"06","question":"Can a consumer tell 'the lookup failed' from 'the lookup found nothing'?","source":"Federico Blanco Sanchez-Llanos, \"The Mould, Not the Letter\", 2026-08-20","method":"structural, name-independent: a boolean or an enum with 2+ values in a tool's declared outputSchema. tools/list only; nothing is executed.","verdict":null,"verdict_note":"A disclosed measurement, not a pass or fail. Nearly all of the field cannot do this, so a threshold would only condemn; and a schema is a declaration, not behaviour. The gate reports the number and the field names, and judges nobody on it.","tools_measured":14,"opaque":0,"flat":0,"discriminating":14,"cannot_distinguish":0,"cannot_distinguish_pct":0,"discriminating_fields":[{"tool":"get_jccdb_dataset_info","fields":["lookup:enum","source_read:boolean"]},{"tool":"list_cost_categories","fields":["lookup:enum","source_read:boolean"]},{"tool":"search_cost_category","fields":["lookup:enum","source_read:boolean"]},{"tool":"get_estimate_reading_guide","fields":["lookup:enum","source_read:boolean"]},{"tool":"get_fair_price_sources","fields":["lookup:enum","source_read:boolean"]},{"tool":"get_price_range","fields":["lookup:enum","source_read:boolean"]},{"tool":"audit_estimate","fields":["lookup:enum","source_read:boolean"]},{"tool":"preview_reverse_estimate","fields":["lookup:enum","source_read:boolean"]},{"tool":"check_red_flags","fields":["lookup:enum","source_read:boolean"]},{"tool":"verify_fair_price","fields":["lookup:enum","source_read:boolean"]},{"tool":"create_ap2_fairness_attestation","fields":["lookup:enum","source_read:boolean"]},{"tool":"suggest_ehn","fields":["lookup:enum","source_read:boolean"]},{"tool":"get_agent_card","fields":["lookup:enum","source_read:boolean"]},{"tool":"verify_integrity_claim","fields":["lookup:enum","source_read:boolean"]}],"caution":"This test cannot read. A field like remote:boolean passes it without being a read-state at all. discriminating_fields is published so you can check each pass yourself."},"canonicalization":{"condition":"07","question":"Can an independent party recompute the fingerprint of this server's declared surface, byte for byte, without us?","method":"RFC 8785 (JCS). The tool manifest from tools/list is canonicalized and hashed. Nothing is executed, and nothing about the content is judged.","measured":true,"canonicalizable":true,"scheme":"rfc8785-jcs","unsafe_integer_scan":"clean","verdict":null,"verdict_note":"A disclosed measurement, not a pass or fail. It never turns a row red. This gate published that promise on 2026-08-23, before the condition was implemented, and is keeping it.","gate_self_conformance":{"vectors":13,"passing":13,"measured_at":"2026-08-23","measured_against":"npm canonicalize@2.0.0, an independent RFC 8785 implementation","first_result":"11 of 12 before the fix. The vector we failed produced a hash over a value we had silently altered.","published":"https://shield.the-horizons-innovation.com/verify-directory/conformance/"},"retracted_limitation":"On the morning of 2026-08-23 this gate published, here and on its own site, that an integer past 2^53 is rounded inside JSON.parse before the gate can see it and that the case was therefore undetectable in JavaScript. That was wrong, and it was wrong in the comfortable direction: it excused us. The source text is available to a JSON.parse reviver, so the rounding is detectable after all. It is now detected, and a surface carrying such a literal has its fingerprint withheld rather than published. The false claim is left on the record instead of being deleted."},"establishes":["at 2026-09-08T23:42:10.563Z this gate (commit a2c5fdf7d26c, version 0.4.1) measured https://mcp.horizonshield.dev/mcp and recorded status verified","conditions passed: agent_card, compensation_disclosure, determinism, mcp_endpoint; conditions failed: none","every hash in this record recomputes from the bytes it names, and record_sha256 recomputes from this record with record_sha256 and recompute_note removed","the measurement instant and the tool measured were derived from a committed salt and a Bitcoin block the subject did not choose (coordinate_derivation)"],"does_not_establish":["correctness of any price, figure or answer the server returns","truth of the compensation declaration; only its presence and shape are measured","quality, competence or fitness of the operator or the service","behaviour at instants not measured or from vantages this gate did not use"]}