{"kind":"crawlcheck-resolve","v":1,"schema":"https://crawlcheck.io/schemas/resolve.json","domain":"concretesolutionsdenver.com","answered_at":"2026-11-03T16:21:24.625Z","reading":"Each section is declared (what the site says about itself), observed (what CrawlCheck was served) or not_measured, with when it was observed. There is no overall score: decide on the section your action depends on.","impersonation":{"state":"no_lookalike","verdict":"no_lookalike","brand_frame":"Tranco top 10,000 (Y83YG)","entity":{"state":"unconfirmed","checked_at":"2026-10-31T04:15:55.435Z","claims":[{"qid":"Q54012930","label":"Concrete Solutions","how":"name","official_website":null,"state":"no_official_website"}],"reading":"the entity it claims has no official website to compare"}},"status":"measured","subject":{"domain":"concretesolutionsdenver.com","host":"concretesolutionsdenver.com","path":"/","report_id":"s8i9jkt1z6","scanned_at":"2026-10-30T20:05:43.290Z","score_version":34},"freshness":{"observed_at":"2026-10-30T20:05:43.290Z","age_hours":92.3,"latest_report_id":"s8i9jkt1z6","is_latest":true,"newer_scan_exists":false,"last_second_reading_at":null,"note":"observed_at is when CrawlCheck fetched the site; nothing here says the site is unchanged since","last_verified_at":"2026-10-30T20:05:43.290Z","fresh_until":"2026-11-06T20:05:43.290Z","stale":false,"fresh_policy":"an answer is fresh for 168 hours after observed_at; each action below has its own maximum age. last_verified_at is the latest reading of this domain by any enrolled observer."},"observers":{"primary":{"version_tag":"b133d16cd82bfe6e","vantage":{"kind":"cloudflare-worker","colo":"LAX"}},"independent_readings":0,"by_field":"https://crawlcheck.io/api/corroboration?domain=concretesolutionsdenver.com","directory":"https://crawlcheck.io/.well-known/crawlcheck-observers.json","samples_by_network":{"networks":0,"samples":0,"groups":[],"window":"the latest 12 independent readings kept for this domain; the primary scan (Cloudflare) is not counted here"}},"crawl_policy":{"state":"not_measured","observed_at":"2026-10-30T20:05:43.290Z","why":"this record carries no per-crawler robots.txt reading"},"delivery":{"state":"observed","observed_at":"2026-10-30T20:05:43.290Z","url":"https://concretesolutionsdenver.com/","identity_basis":"every identity was sent by CrawlCheck from its own network; none is the named operator's own crawler","identities":[{"identity":"anon","label":"Unnamed client","role":"control","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"gptbot","label":"GPTBot","role":"train","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"claudebot","label":"ClaudeBot","role":"train","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"oaisearch","label":"OAI-SearchBot","role":"answer","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"claudesearch","label":"Claude-SearchBot","role":"answer","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"perplexity","label":"PerplexityBot","role":"answer","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"googlebot","label":"Googlebot","role":"search","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"browser","label":"Mobile browser","role":"browser","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"bingbot","label":"Bingbot","role":"search","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"applebot","label":"Applebot","role":"search","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"amazonbot","label":"Amazonbot","role":"train","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"bytespider","label":"Bytespider","role":"train","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"metaexternal","label":"Meta-ExternalAgent","role":"train","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null},{"identity":"ccbot","label":"CCBot","role":"train","status":200,"words":10,"blocker":null,"redirected_to":null,"x_robots_tag":null}]},"machine_files":{"state":"observed","observed_at":"2026-10-30T20:05:43.290Z","files":[{"path":"/robots.txt","status":200,"content_type":"text/plain","bytes":0,"verdict":"warn"},{"path":"/sitemap.xml","status":200,"content_type":"text/xml","bytes":0,"verdict":"ok"},{"path":"/sitemap_index.xml","status":404,"content_type":"text/html; charset=utf-8","bytes":2852,"verdict":"absent"},{"path":"/wp-sitemap.xml","status":404,"content_type":"text/html; charset=utf-8","bytes":2852,"verdict":"absent"},{"path":"/llms.txt","status":200,"content_type":"text/plain; charset=utf-8","bytes":0,"verdict":"ok"},{"path":"/entitymap.json","status":null,"content_type":null,"bytes":null,"verdict":"absent","source":"entity map reading"}],"read_before_page":[],"hashes":"every fetched body's SHA-256 is in the sealed manifest: https://crawlcheck.io/api/artifact/c5b6d68bd84d6556b727dadbc6b4ae2855420b3102ffce940e019205eb093f29?body=1"},"capabilities":{"state":"observed","observed_at":"2026-10-30T20:05:43.290Z","checked":[{"kind":"a2a_agent_card","url":"https://concretesolutionsdenver.com/.well-known/agent-card.json","status":404}],"declared":0,"by_safety_class":{},"verified":0,"mismatches":0,"invocation_rule":"capabilities are read from declarations only; nothing is invoked. Later verification may call read_only_public operations alone; every other class needs the site owner's authorisation and a test account, and unknown is never called","certificate":{"id":"ccap1:7d3629b0684a1496661f72e6df43ac0c9605273c2c2886ae36bd18d2b6137f99","signed":true,"entry":"https://crawlcheck.io/api/registry/capabilities?domain=concretesolutionsdenver.com","verify":"https://crawlcheck.io/api/registry/capabilities/verify?domain=concretesolutionsdenver.com"},"items":"https://crawlcheck.io/api/capabilities?domain=concretesolutionsdenver.com"},"entity":{"state":"observed","observed_at":"2026-10-30T20:05:43.290Z","name":"Concrete Solutions","wikidata_item_found":true,"links":[],"states":"corroborated = the linked page links back; unreciprocated = readable and does not; unverifiable = could not be read from here","identity":"declared","identity_reading":"“Concrete Solutions” is named in the site's structured data, with no profiles claimed to confirm it","corroboration":{"profiles":0,"corroborated":0,"unreciprocated":0,"unverifiable":0,"dead":0,"not_checked":0},"graph":{"name":"Concrete Solutions","alternate_name":null,"type":"Organization","id":"https://concretesolutionsdenver.com/#business","declared_relations":[],"relations_rule":"declared by the site itself; one-way until the related entity names this one back","view":"https://crawlcheck.io/tools/entity-graph?domain=concretesolutionsdenver.com"}},"mcp_registry":{"state":"observed","listed":0,"import_finished_at":"2026-11-01T12:53:39.356Z","import_run":3,"import_servers":53641,"why":"the official MCP Registry lists no remote MCP endpoint on this domain (import finished 2026-11-01)","url":"https://crawlcheck.io/api/mcp/servers?host=concretesolutionsdenver.com"},"content_clock":{"homepage":{"url":"https://concretesolutionsdenver.com/","observed":true,"content_sha256":"87652e254f417a219d2ae079b798ae26d65a5d029cb97b2e0cb1ffc20cec4c72","first_observed":"2026-10-20T00:34:40.987Z","last_read":"2026-10-20T13:16:37.112Z","changes_observed":0,"main_content_last_changed":null,"unchanged_since_first_observed":"2026-10-20T00:34:40.987Z","declared":{},"date_moved_words_did_not":null,"words_changed_date_did_not":null,"api":"https://crawlcheck.io/api/v1/content-clock?url=https%3A%2F%2Fconcretesolutionsdenver.com%2F"},"reading":"When the main content (not the bytes) of these URLs last changed, from CrawlCheck's own reads. Full history and the page's declared dates: the api link."},"self_claims":{"observed":true,"first_read":"2026-10-19T22:58:32.937Z","last_read":"2026-11-03T09:24:54.438Z","reads":6,"claims":[{"type":"founded","value":"2017","status":"current","first_seen":"2026-10-19T22:58:32.937Z","last_seen":"2026-11-03T09:24:54.438Z"},{"type":"telephone","value":"+1-720-594-6823","status":"current","first_seen":"2026-10-19T22:58:32.937Z","last_seen":"2026-11-03T09:24:54.438Z"},{"type":"years_in_business","value":"12 years","status":"current","first_seen":"2026-10-19T22:58:32.937Z","last_seen":"2026-11-03T09:24:54.438Z"}],"api":"https://crawlcheck.io/api/v1/claims?domain=concretesolutionsdenver.com","reading":"what the site says about itself on its own pages, with when CrawlCheck first and last saw each value; not a statement that the claim is true"},"read_equivalence":{"url":"https://concretesolutionsdenver.com/","observed":true,"verdict":"equivalent","checked_at":"2026-11-01T02:20:54.530Z","first_observed":"2026-10-19T19:42:33.355Z","ai_identities_served":"3 of 3","identities":[{"identity":"gptbot","verdict":"equivalent","text_ratio":1,"instruction_like_text":false},{"identity":"claudebot","verdict":"equivalent","text_ratio":1,"instruction_like_text":false},{"identity":"perplexity","verdict":"equivalent","text_ratio":1,"instruction_like_text":false}],"api":"https://crawlcheck.io/api/v1/read-equivalence?url=https%3A%2F%2Fconcretesolutionsdenver.com%2F","reading":"whether the main text served to AI identities is the same text a person sees in a browser, from one simultaneous read of the homepage; evidence and the differing sentences at the api link"},"rights":{"observed":true,"path":"/","read_at":"2026-11-03T09:24:40.889Z","api":"https://crawlcheck.io/api/v1/rights?domain=concretesolutionsdenver.com","reading":"one value per use for the homepage, with the signal that decided it; signals considered, conflicts and per-path answers at the api link","train":{"value":"not_declared","decided_by":{"signal":"robots.txt","url":"https://concretesolutionsdenver.com/robots.txt","evidence":"access is open to GPTBot, ClaudeBot, Google-Extended, CCBot, Applebot-Extended, meta-externalagent on / and no signal states whether training a model on it is allowed"},"conflicts":0},"ground":{"value":"not_declared","decided_by":{"signal":"robots.txt","url":"https://concretesolutionsdenver.com/robots.txt","evidence":"access is open to OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User on / and no signal states whether answering questions from it is allowed"},"conflicts":0},"summarize":{"value":"not_declared","decided_by":{"signal":"robots.txt","url":"https://concretesolutionsdenver.com/robots.txt","evidence":"access is open to OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User on / and no signal states whether summarizing it is allowed"},"conflicts":0},"cite":{"value":"not_declared","decided_by":{"signal":"robots.txt","url":"https://concretesolutionsdenver.com/robots.txt","evidence":"access is open to OAI-SearchBot, Claude-SearchBot, PerplexityBot, Googlebot, Bingbot on / and no signal states whether citing it is allowed"},"conflicts":0},"transact":{"value":"not_declared","decided_by":{"signal":"robots.txt","url":"https://concretesolutionsdenver.com/robots.txt","evidence":"access is open to ChatGPT-User, Claude-User, Perplexity-User on / and no signal states whether acting or buying on it is allowed"},"conflicts":0}},"findings":{"access":"public","rule":"the top finding in full; the rest by title, severity and path (a licence for this domain opens them)","items":[{"fid":"f1:ad9a519d8f6053e9618c","decision_id":"d1:2ac28e43c547a552c8e1","code":"HOST_DUPLICATE_200","severity":3,"path":"/","title":"www and the apex both serve the site instead of one redirecting","rule_revision":1,"span_id":"8264f9e74f448dfc","state":"persisted","valid_time":{"valid_from":{"after":null,"by":"2026-09-01T17:30:33.216Z"},"valid_to":null,"recorded_at":"2026-09-01T17:30:33.216Z","superseded_at":null,"superseded_by":null,"earlier_intervals":0,"before_bt1":true},"observations_linked":1,"trust":{"freshness":{"observed_at":"2026-10-30T20:05:43.290Z","last_observed":"2026-10-30T20:05:43.290Z","held_since":"2026-09-01T17:30:33.216Z","state":"persisted"},"confidence":{"level":"reproduced","means":"seen again: repeated on CrawlCheck's own network, or in more than one scan","basis":["seen in 3 scans since 2026-09-01","the decision names the 1 fetch it read"],"sample":{"cross_network":"not_applicable","why":"this finding does not depend on the requesting identity or network, so other networks' readings neither confirm nor contradict it","readings":1,"diversity":{"readings":1,"observers":1,"distinct_networks":1,"networks":{"cloudflare":1},"distinct_countries":0,"countries":{}},"scans":{"seen":3,"could_have_seen":null,"interval":null,"why":"scans that could have seen this finding are counted from 2026-10-08; this finding was first seen before that, so only the scans that saw it are known"},"interval":null,"interval_of":null,"note":"interval: the 95% Wilson score interval for the share, from k of n; it is wide when n is small, and that width is the point. networks: autonomous systems the readings arrived from (two observers on one network are one network). countries: where the connection was measured; CrawlCheck's own reading leaves from a Cloudflare data centre and carries no country here."}},"contradictions":[]},"score_effect":{"decision_id":"d1:2ac28e43c547a552c8e1","code":"HOST_DUPLICATE_200","path":"/","severity":3,"level":"medium","points":0,"cap":"C","binding":false,"letter_now":"C","letter_without_it":"C","same_level_others":3,"says":"Caps the letter at C together with 3 other medium-severity findings; the letter rises only when all of them are gone. Moves no points."},"root_cause":null,"corroboration":{"status":"not_applicable","reading":"this finding does not depend on the requesting identity or network"},"explain":{"mcp_tool":"explain_finding","arguments":{"id":"d1:2ac28e43c547a552c8e1"},"url":"https://crawlcheck.io/api/explain?id=d1:2ac28e43c547a552c8e1"},"disputes":[]},{"title":"robots.txt declares no sitemap","severity":3,"path":"/robots.txt","locked":true},{"title":"Almost nothing a machine receives from this page is readable text","severity":3,"path":"/","locked":true},{"title":"The page’s content only exists after JavaScript runs","severity":3,"path":"/","locked":true},{"title":"Images are not the format their file names say","severity":1,"path":"/","locked":true},{"title":"HTTPS is served without a Strict-Transport-Security header","severity":1,"path":"/","locked":true}],"summary":{"total":6,"serious":4,"by_severity":{"Medium":4,"Note":2}},"withheld":"Every finding is listed by title, severity and path. The top one carries its code, detail and evidence; the other 5 are locked (locked: true) and need a licence or the fix service: https://crawlcheck.io/pricing"},"confidence":{"identities_answered":{"n":14,"of":14,"ratio":1},"vantages":1,"vantage_state":{"state":"single_vantage","means":"only one network read this site near the scan; nothing here is cross-checked","networks":1,"readings":1,"countries":0,"findings_contested":0,"findings_cross_confirmed":0,"states":{"single_vantage":"only one network read this site near the scan; nothing here is cross-checked","insufficient_samples":"more than one network read it, but fewer than 3 readings: too few to state agreement","cross_confirmed":"two or more networks read it, 3 or more readings, and no finding is contested between them","network_divergence":"networks disagree on at least one finding","regional_divergence":"networks in more than one country disagree on at least one finding: what is served depends on where the request comes from"}},"note":"counts and ratios only - there is no composite confidence number, because the parts do not combine into one honestly","sample":{"readings":1,"observers":1,"distinct_networks":1,"networks":{"cloudflare":1},"distinct_countries":0,"countries":{},"window_hours":6,"all_time":{"independent_readings":0,"networks":[]},"reading":"readings of this domain within 6 hours of the scan: CrawlCheck's own plus every independent observer's, with the networks and countries they arrived from","note":"interval: the 95% Wilson score interval for the share, from k of n; it is wide when n is small, and that width is the point. networks: autonomous systems the readings arrived from (two observers on one network are one network). countries: where the connection was measured; CrawlCheck's own reading leaves from a Cloudflare data centre and carries no country here."}},"contradictions":{"site":[],"between_networks_open":[],"locked_findings_not_shown":5},"facts":{"state":"observed","observed_at":"2026-10-30T20:05:43.290Z","count":0,"facts":[],"not_facts":{"page_only":2,"page_inconsistent":1,"unverified":0,"contradicted":0},"rule":"A fact here is a claim the site makes that an outside source (a listing, a Business Profile, a profile that links back, registration data) was seen to agree with on observed_at. It is signed with the rest of this answer. Claims only the page makes are not facts.","claims":"https://crawlcheck.io/r/s8i9jkt1z6.claims.json"},"evidence":{"report":"https://crawlcheck.io/r/s8i9jkt1z6","machine_record":"https://crawlcheck.io/api/v1/machine-record?id=s8i9jkt1z6","manifest_sha256":"c5b6d68bd84d6556b727dadbc6b4ae2855420b3102ffce940e019205eb093f29","verify":"https://crawlcheck.io/api/verify?id=s8i9jkt1z6","bundle":"https://crawlcheck.io/api/bundle?id=s8i9jkt1z6","offline_verifier":"https://crawlcheck.io/crawlcheck-verify.mjs?v=6a51f060110f86b8","verify_this_answer":"save it as answer.json, then: node crawlcheck-verify.mjs answer.json"},"identity":{"state":"claimed","name":"Concrete Solutions","type":"Organization","id":"https://concretesolutionsdenver.com/#business","independent_confirmations":0,"confirmed_by":[],"claimed_profiles_not_linking_back":0,"related_sites_linking_back":[],"confirm_with":null,"observed_at":"2026-10-30T20:05:43.290Z","reading":"“Concrete Solutions” is the site's own claim; no outside source was checked against it","rule":"confirmed when at least one source independent of the site (a profile on a public platform that links back, a Business Profile or a listing that shows the same name or phone) agrees; each source counts once. Other websites that link back are listed as related sites and not counted, since one operator can run several. Signed with this answer."},"actions":{"v":1,"decisions":"allow | warn | require_confirmation | block | unsupported","rule":"decided from this answer's own sections at signing time; an agent's own policy may be stricter, never looser","read":{"decision":"warn","minimum_assurance":"reachable","assurance_found":[],"needs":"robots.txt lets AI agents read the path, and the page was served to at least one AI-crawler identity","why":"no robots.txt policy was read, so permission is unknown","doubts":["no_policy"],"max_age_hours":168},"cite":{"decision":"warn","minimum_assurance":"reachable + entity observed","assurance_found":["entity observed","read_equivalent"],"needs":"everything read needs, plus an observed entity and no contradiction the site makes with itself","scope":{"covers":["access: robots.txt and what was actually served to AI-crawler identities","permissions: the rights and content signals the site declares","identity: the entity the site declares and who has proven control of the domain","provenance: when, from where and by whom it was observed, signed and logged"],"does_not_cover":"whether the content is true, accurate, current or complete; a cite decision says the source may be cited and attributed, not that what it says is right"},"why":"no robots.txt policy was read, so permission is unknown","doubts":["no_policy"],"max_age_hours":168},"connect":{"decision":"unsupported","minimum_assurance":"conformant","assurance_found":[],"needs":"a declared capability that CrawlCheck invoked read-only and found to behave as declared","why":"the site declares no capability to connect to","doubts":[],"max_age_hours":72},"transact":{"decision":"require_confirmation","minimum_assurance":"action_ready","assurance_found":[],"needs":"owner-verified identity and an action-ready capability; CrawlCheck does not certify transactions, so a human confirms","why":"CrawlCheck does not certify transactions; a human confirms every financial, identity or irreversible action; the identity is claimed: “Concrete Solutions” is the site's own claim; no outside source was checked against it. Confirm who you are paying through a channel you already trust (a number you found yourself, not one on this site) before acting","doubts":["identity_claimed"],"max_age_hours":24},"administer":{"decision":"block","minimum_assurance":"never automatic","assurance_found":[],"needs":"high-privilege operations are never authorised by a public record","why":"never authorised by a public record","doubts":[],"max_age_hours":0}},"absences":[{"what":"sitemap","path":"/sitemap_index.xml","result":"absent","at":"2026-10-30T20:05:43.290Z","from":{"observer":"crawlcheck-worker","network":"cloudflare","directory":"https://crawlcheck.io/.well-known/crawlcheck-observers.json"},"checked":[{"method":"GET","url":"https://concretesolutionsdenver.com/sitemap_index.xml","status":404,"redirects":"followed"}],"scope":"GET https://concretesolutionsdenver.com/sitemap_index.xml answered HTTP 404 at 2026-10-30T20:05:43.290Z. The file was not served at this path then; this says nothing about the same content at another path or a later time."},{"what":"sitemap","path":"/wp-sitemap.xml","result":"absent","at":"2026-10-30T20:05:43.290Z","from":{"observer":"crawlcheck-worker","network":"cloudflare","directory":"https://crawlcheck.io/.well-known/crawlcheck-observers.json"},"checked":[{"method":"GET","url":"https://concretesolutionsdenver.com/wp-sitemap.xml","status":404,"redirects":"followed"}],"scope":"GET https://concretesolutionsdenver.com/wp-sitemap.xml answered HTTP 404 at 2026-10-30T20:05:43.290Z. The file was not served at this path then; this says nothing about the same content at another path or a later time."},{"what":"a2a_agent_card","result":"absent","at":"2026-10-30T20:05:43.290Z","from":{"observer":"crawlcheck-worker","network":"cloudflare","directory":"https://crawlcheck.io/.well-known/crawlcheck-observers.json"},"checked":[{"method":"GET","url":"https://concretesolutionsdenver.com/.well-known/agent-card.json","status":404,"redirects":"followed"}],"scope":"Every location CrawlCheck checks for a a2a agent card answered not found (404). No declaration of this kind was served at those URLs at that time; one served elsewhere, or added later, is not covered."},{"what":"mcp_registry_listing","result":"absent","at":"2026-11-01T12:53:39.356Z","from":{"observer":"crawlcheck-worker","network":"cloudflare","source":"registry.modelcontextprotocol.io"},"checked":[{"method":"registry import","url":"https://registry.modelcontextprotocol.io/v0/servers","run":3,"servers_read":53641,"finished_at":"2026-11-01T12:53:39.356Z"}],"scope":"The official MCP Registry, read in full (import finished 2026-11-01T12:53:39.356Z), lists no remote MCP endpoint whose host is concretesolutionsdenver.com or a subdomain. Servers not listed in that registry are not covered."}],"control":{"state":"unproven","proofs":[],"organization":null,"claim":"https://crawlcheck.io/registry/concretesolutionsdenver.com/claim","why":"nobody has proven control of concretesolutionsdenver.com to CrawlCheck, so who stands behind the site is unconfirmed","note":"control says who answers for the domain, not whether it is safe; it does not change any decision in this answer"},"transparency":{"state":"included","log_id":"crawlcheck-resolve-log-v1","leaf_hash":"85a1afb1766488f262b85ae03d31a434470f40d2d1ee00df21e4d90b1ba139e8","batch":1474,"index":2,"batch_size":3,"path":["75e43e3d37b96848c09b2d270687e5280f0b4b047f82ad49ca75b96946b9bd0c"],"sth":{"kind":"crawlcheck-log-sth","v":1,"log_id":"crawlcheck-resolve-log-v1","batch":1474,"first_index":287697,"batch_size":3,"tree_size":287700,"batch_root":"aff8ee0fa4dee0cd6b7da7c66128b6f0a2f004fb3fbb56de8c4c13cc67d80370","prev_sth_sha256":"e1d78ffd08934a7ef9cfd91f2e3c625e002ca1214a1113a5307158e181c2688a","created_at":"2026-10-30T20:32:27.316Z","rules":{"leaf":"SHA-256(0x00 || canonical JSON of the answer's decision content)","tree":"RFC 9162 Merkle tree hash over this batch's leaf hashes, sorted","chain":"prev_sth_sha256 is the sha256 of the previous batch's signed tree head; batch numbers are consecutive and tree_size grows by batch_size"},"code":{"version_id":"48134344-5788-43d2-9ef2-1ee679971052","script_sha16":"b133d16cd82bfe6e","state":"attested","deployed":{"at":"2026-10-30T03:14:45.024Z","commit":"8188afc60ca0","run":"40996199142"},"build_log_entry":1131,"score_version":34,"scoring_policy_sha256":"76ee7526c402d711f2c976ad88ae13d4d3411aaa9d5ca3dc87ab3102396b1370","decision_rules_sha256":"18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e","check":"https://crawlcheck.io/api/v1/builds/48134344-5788-43d2-9ef2-1ee679971052"},"sha256":"e39a2d483f95d1a85d27f3c8a0767fd0cf14b8f7c1b1cf1ef365f84587e2580c","signature":{"v":1,"alg":"Ed25519","kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","over":"sha256","message":"crawlcheck-data-v1\ne39a2d483f95d1a85d27f3c8a0767fd0cf14b8f7c1b1cf1ef365f84587e2580c","sig":"vaV9VH1jJTRhWr_LrfQpf56K5f5TtvJ0fvzzEQLB89ausHjXd3borgMvWW1w5yiwgjIul_YAwD8gwFJW3v7oAw","signed_at":"2026-10-30T20:32:27.330Z","key":{"kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","jwk":{"kty":"OKP","crv":"Ed25519","x":"5TmKCOx0TTHepq7HwyXBHvGQpVCSBd2lV8cLzYVqFxQ"},"published_in":"https://crawlcheck.io/.well-known/http-message-signatures-directory"},"canonical":"sha256 over canonical JSON of every field except sha256 and signature"}},"witnesses":"https://crawlcheck.io/api/v1/log/sth/1474","content_rule":"leaf = SHA-256(0x00 || canonical JSON of the answer's decision content); see https://crawlcheck.io/api/v1/log"},"assurance_ladder":{"v":1,"level":null,"order":["declared","discovered","reachable","conformant","owner_verified","authorized","reliable","action_ready"],"rungs":[{"rung":"declared","state":"not_reached","why":"no crawl policy, capability or registry listing was found"},{"rung":"discovered","state":"not_reached","why":"nothing an agent could call was found (no OpenAPI, MCP card, A2A card or registry listing)"},{"rung":"reachable","state":"not_reached","why":"no robots.txt policy was read, so permission is unknown"},{"rung":"conformant","state":"not_reached","why":"nothing declared to test"},{"rung":"owner_verified","state":"not_reached","why":"nobody has proven control of concretesolutionsdenver.com to CrawlCheck, so who stands behind the site is unconfirmed"},{"rung":"authorized","state":"not_reached","why":"the domain's owner has published no authorization for agents"},{"rung":"reliable","state":"not_measured","why":"reliability is measured for MCP endpoints over time; none on this domain is on the panel"},{"rung":"action_ready","state":"not_reached","why":"not yet: declared, discovered, reachable, conformant, owner_verified, authorized, reliable"}],"rule":"level is the highest rung with every rung under it reached; a rung is reached only on measured evidence, not_reached when measured and short, not_measured when there was nothing to measure. The ladder describes evidence; each action's decision is still made in actions"},"code":{"version_id":"13ebd64d-8ec8-461a-8c3f-bf37428f7cee","script_sha16":"1b0983be13c5ebd0","state":"attested","deployed":{"at":"2026-11-03T05:25:06.329Z","commit":"58aa604b1abd","run":"41583702043"},"build_log_entry":1393,"score_version":34,"scoring_policy_sha256":"76ee7526c402d711f2c976ad88ae13d4d3411aaa9d5ca3dc87ab3102396b1370","decision_rules_sha256":"18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e","check":"https://crawlcheck.io/api/v1/builds/13ebd64d-8ec8-461a-8c3f-bf37428f7cee"},"sha256":"ffe736b1e79da0ef20534a72b53b1b8126646dfd58a2d7f0494579f32ae50477","signature":{"v":1,"alg":"Ed25519","kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","over":"sha256","message":"crawlcheck-data-v1\nffe736b1e79da0ef20534a72b53b1b8126646dfd58a2d7f0494579f32ae50477","sig":"fSUKa6PThJrEBS0a0rwo9jLyHCje_jlc9IHt1hOIPQgeQ3A1ZPtkTWE-qcLoHLE3qrAZ5kDJO3Mei1hw-o6WAg","signed_at":"2026-11-03T16:21:24.633Z","key":{"kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","jwk":{"kty":"OKP","crv":"Ed25519","x":"5TmKCOx0TTHepq7HwyXBHvGQpVCSBd2lV8cLzYVqFxQ"},"published_in":"https://crawlcheck.io/.well-known/http-message-signatures-directory"},"canonical":"sha256 over canonical JSON of every field except sha256 and signature"}}