{"kind":"crawlcheck-resolve","v":1,"schema":"https://crawlcheck.io/schemas/resolve.json","domain":"geoptimize.ai","answered_at":"2026-10-19T02:26:28.547Z","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)"},"status":"measured","subject":{"domain":"geoptimize.ai","host":"geoptimize.ai","path":"/","report_id":"9qpltxm4o2","scanned_at":"2026-10-03T09:17:58.531Z","score_version":26},"freshness":{"observed_at":"2026-10-03T09:17:58.531Z","age_hours":377.1,"latest_report_id":"9qpltxm4o2","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-03T09:17:58.531Z","fresh_until":"2026-10-10T09:17:58.531Z","stale":true,"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":"1237d323d3d86ebb","vantage":{"kind":"cloudflare-worker","colo":null}},"independent_readings":0,"by_field":"https://crawlcheck.io/api/corroboration?domain=geoptimize.ai","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-03T09:17:58.531Z","why":"this record carries no per-crawler robots.txt reading"},"delivery":{"state":"not_measured","observed_at":"2026-10-03T09:17:58.531Z","why":"this record carries no per-identity delivery reading"},"machine_files":{"state":"observed","observed_at":"2026-10-03T09:17:58.531Z","files":[{"path":"/robots.txt","status":null,"content_type":null,"bytes":0,"verdict":"error"},{"path":"/sitemap.xml","status":null,"content_type":null,"bytes":0,"verdict":"error"},{"path":"/sitemap_index.xml","status":null,"content_type":null,"bytes":0,"verdict":"error"},{"path":"/wp-sitemap.xml","status":null,"content_type":null,"bytes":0,"verdict":"error"},{"path":"/llms.txt","status":null,"content_type":null,"bytes":0,"verdict":"error"}],"read_before_page":[],"hashes":"every fetched body's SHA-256 is in the sealed manifest: https://crawlcheck.io/api/artifact/226b64ce065cb275ef6279cef1c02af4ad6a9af2180f4b5ee1f361c1871eb6d4?body=1"},"capabilities":{"state":"observed","observed_at":"2026-10-03T09:17:58.531Z","checked":[{"kind":"a2a_agent_card","url":"https://geoptimize.ai/.well-known/agent-card.json","status":null}],"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:62044908bb5d9656325c2154e484f7d58fc233aeb85bde0f33c0ccf3fd8c1328","signed":true,"entry":"https://crawlcheck.io/api/registry/capabilities?domain=geoptimize.ai","verify":"https://crawlcheck.io/api/registry/capabilities/verify?domain=geoptimize.ai"},"items":"https://crawlcheck.io/api/capabilities?domain=geoptimize.ai"},"entity":{"state":"not_measured","observed_at":"2026-10-03T09:17:58.531Z","why":"this record carries no entity reciprocity reading"},"mcp_registry":{"state":"observed","listed":0,"import_finished_at":"2026-10-14T20:03:09.131Z","import_run":1,"import_servers":43267,"why":"the official MCP Registry lists no remote MCP endpoint on this domain (import finished 2026-10-14)","url":"https://crawlcheck.io/api/mcp/servers?host=geoptimize.ai"},"content_clock":{"homepage":{"url":"https://geoptimize.ai/","observed":false,"start":"https://crawlcheck.io/api/v1/content-clock?url=https%3A%2F%2Fgeoptimize.ai%2F","reading":"not clocked yet; reading the API URL starts the clock"},"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":false,"start":"https://crawlcheck.io/api/v1/claims?domain=geoptimize.ai","reading":"no claim ledger yet; reading the API URL starts it"},"read_equivalence":{"url":"https://geoptimize.ai/","observed":true,"verdict":"unverifiable","checked_at":"2026-10-15T23:56:56.400Z","first_observed":"2026-10-10T11:27:05.102Z","ai_identities_served":null,"identities":[],"api":"https://crawlcheck.io/api/v1/read-equivalence?url=https%3A%2F%2Fgeoptimize.ai%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-10-17T21:38:23.659Z","api":"https://crawlcheck.io/api/v1/rights?domain=geoptimize.ai","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":"unknown","decided_by":{"signal":"robots.txt","url":"https://geoptimize.ai/robots.txt","evidence":"robots.txt could not be read: no answer; the site's policy for train is unknown"},"conflicts":0},"ground":{"value":"unknown","decided_by":{"signal":"robots.txt","url":"https://geoptimize.ai/robots.txt","evidence":"robots.txt could not be read: no answer; the site's policy for ground is unknown"},"conflicts":0},"summarize":{"value":"unknown","decided_by":{"signal":"robots.txt","url":"https://geoptimize.ai/robots.txt","evidence":"robots.txt could not be read: no answer; the site's policy for summarize is unknown"},"conflicts":0},"cite":{"value":"unknown","decided_by":{"signal":"robots.txt","url":"https://geoptimize.ai/robots.txt","evidence":"robots.txt could not be read: no answer; the site's policy for cite is unknown"},"conflicts":0},"transact":{"value":"unknown","decided_by":{"signal":"robots.txt","url":"https://geoptimize.ai/robots.txt","evidence":"robots.txt could not be read: no answer; the site's policy for transact is unknown"},"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:f87d775adc06ae62818d","decision_id":"d1:9a13e7e5c17a1a611429","code":"NO_SITEMAP_FOUND","severity":4,"path":"/","title":"No XML sitemap found","rule_revision":1,"span_id":"bd556087086244ee","state":"persisted","valid_time":{"valid_from":{"after":null,"by":"2026-09-18T03:03:49.959Z"},"valid_to":null,"recorded_at":"2026-09-18T03:03:49.959Z","superseded_at":null,"superseded_by":null,"earlier_intervals":0,"before_bt1":true},"observations_linked":3,"trust":{"freshness":{"observed_at":"2026-10-03T09:17:58.531Z","last_observed":"2026-10-03T09:17:58.531Z","held_since":"2026-09-18T03:03:49.959Z","state":"persisted"},"confidence":{"level":"reproduced","means":"seen again: repeated on the scanner's own network, or in more than one scan","basis":["seen in 4 scans since 2026-09-18","the decision names the 3 fetches it read"]},"contradictions":[]},"score_effect":{"decision_id":"d1:9a13e7e5c17a1a611429","code":"NO_SITEMAP_FOUND","path":"/","severity":4,"level":"high","points":0,"cap":"D","binding":false,"letter_now":"F","letter_without_it":"F","same_level_others":0,"says":"Would cap the letter at D, but the score (39) already reads F, so the letter is the same without it. 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:9a13e7e5c17a1a611429"},"url":"https://crawlcheck.io/api/explain?id=d1:9a13e7e5c17a1a611429"},"disputes":[]},{"title":"No llms.txt","severity":1,"path":"/llms.txt","locked":true},{"title":"HTTPS is served without a Strict-Transport-Security header","severity":1,"path":"/","locked":true}],"summary":{"total":3,"serious":1,"by_severity":{"High":1,"Note":2}},"withheld":"Every finding is listed by title, severity and path. The top one carries its code, detail and evidence; the other 2 are locked (locked: true) and need a licence or the fix service: https://crawlcheck.io/pricing"},"confidence":{"identities_answered":{"n":0,"of":0,"ratio":null},"vantages":1,"note":"counts and ratios only - there is no composite confidence number, because the parts do not combine into one honestly","sample":null,"sample_note":"this stored answer was built before readings, networks and intervals were recorded (2026-10-08); it is rebuilt on the domain's next scan or independent reading","vantage_state":{"state":"not_recorded","means":"this stored answer predates recorded readings; it is rebuilt on the next scan","networks":0,"readings":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"},"from":"derived when served from an answer stored before mv1"}},"contradictions":{"site":[],"between_networks_open":[],"locked_findings_not_shown":2},"evidence":{"report":"https://crawlcheck.io/r/9qpltxm4o2","machine_record":"https://crawlcheck.io/api/v1/machine-record?id=9qpltxm4o2","manifest_sha256":"226b64ce065cb275ef6279cef1c02af4ad6a9af2180f4b5ee1f361c1871eb6d4","verify":"https://crawlcheck.io/api/verify?id=9qpltxm4o2","bundle":"https://crawlcheck.io/api/bundle?id=9qpltxm4o2","offline_verifier":"https://crawlcheck.io/crawlcheck-verify.mjs?v=c96356e45adb8e56","verify_this_answer":"save it as answer.json, then: node crawlcheck-verify.mjs answer.json"},"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":[],"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; the publisher's identity was not observed, so attribution is unconfirmed","doubts":["no_policy","entity_unobserved"],"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","doubts":[],"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":"mcp_registry_listing","result":"absent","at":"2026-10-14T20:03:09.131Z","from":{"observer":"crawlcheck-worker","network":"cloudflare","source":"registry.modelcontextprotocol.io"},"checked":[{"method":"registry import","url":"https://registry.modelcontextprotocol.io/v0/servers","run":1,"servers_read":43267,"finished_at":"2026-10-14T20:03:09.131Z"}],"scope":"The official MCP Registry, read in full (import finished 2026-10-14T20:03:09.131Z), lists no remote MCP endpoint whose host is geoptimize.ai or a subdomain. Servers not listed in that registry are not covered."}],"control":{"state":"unproven","proofs":[],"organization":null,"claim":"https://crawlcheck.io/registry/geoptimize.ai/claim","why":"nobody has proven control of geoptimize.ai 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":"5041df2e0ebdb88e18cb5181132b68a53ee2fa2f65022f27f557cc83b912bf2e","batch":244,"index":134,"batch_size":500,"path":["50cbbcd78823fb4bd933e3ef811aac52d892278f0720fa2dbbaef6b414056945","309604f046e3453391f2f1c87d51560914d8f8fddeeb2f6956c89e9a78466789","1de2791af5e1410918bd5e1fa5889f58047343a015a4424ae1e0e4a65e90b443","058c50f577b01a39fa07a1284b7a8e6980c63635d033179100a09b2d2a35ff56","19a771d31989db911f051f678e6739b5a57ba428321558d75ad050c2ced64dcf","3a765d71fe24abea605b4109ac7556e340e78fcee85d8101fa6acb3043f78e8c","f8c121c2a245d8160d8fc56e55a3f76ef3f8960a86bcb5a614ae4043bf87025a","6a77d92d3817a3a4073f571957ecb4b4470306a7d85eb463452d6900a4c83e04","47773ce20e38729f84bb9c6d7d2c18bcb68d4135470c4ae5a7745e64af4e41ff"],"sth":{"kind":"crawlcheck-log-sth","v":1,"log_id":"crawlcheck-resolve-log-v1","batch":244,"first_index":67721,"batch_size":500,"tree_size":68221,"batch_root":"6f614743465435db63c190172485603b84a224aed265de9db3fdbdbb05180af6","prev_sth_sha256":"796c2d89d266f7e24d0343fa5251d6ec0b25e3fbba7fac117eca7ebfaef5e664","created_at":"2026-10-11T10:47:29.762Z","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":"be8a9372-e14a-4365-99fb-a384606e0288","script_sha16":"50920016c3125160","state":"attested","deployed":{"at":"2026-10-10T18:19:42.494Z","commit":"c8c4a73660f9","run":"38075292036"},"build_log_entry":188,"score_version":31,"scoring_policy_sha256":"86898d2a8c88d6b56e6710f3aadf4375cbb5342d4a2f9aa017b536d95602d671","decision_rules_sha256":"18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e","check":"https://crawlcheck.io/api/v1/builds/be8a9372-e14a-4365-99fb-a384606e0288"},"sha256":"bfa78c39ac789a4d303ac0e2a422a60036ad301431ad1a1e35c6e7f254746b10","signature":{"v":1,"alg":"Ed25519","kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","over":"sha256","message":"crawlcheck-data-v1\nbfa78c39ac789a4d303ac0e2a422a60036ad301431ad1a1e35c6e7f254746b10","sig":"t6pQjcfyOpErVmHKExzuCVyl9MO8pVMHMmcmQXQmihsSgOWwun3hCOmM2yL71WO4_Aj85hq2Bv6TgJPPRAlhBA","signed_at":"2026-10-11T10:47:29.762Z","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/244","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_measured","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 geoptimize.ai 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":"6929574e-df21-45a5-8a92-5b8ba41cc9aa","script_sha16":"85c9b9b6c9a512ed","state":"attested","deployed":{"at":"2026-10-18T20:02:49.319Z","commit":"2bf491f55991","run":"39161431635"},"build_log_entry":597,"score_version":32,"scoring_policy_sha256":"d3c9c95d409dae4e90b8e868ff113e631e445e33c14a0cc008dda144293821b3","decision_rules_sha256":"18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e","check":"https://crawlcheck.io/api/v1/builds/6929574e-df21-45a5-8a92-5b8ba41cc9aa"},"sha256":"cc16dc2dc959718ce5e56e671f360a9b29fb4815cc1da142249f300ef18e02d6","signature":{"v":1,"alg":"Ed25519","kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","over":"sha256","message":"crawlcheck-data-v1\ncc16dc2dc959718ce5e56e671f360a9b29fb4815cc1da142249f300ef18e02d6","sig":"Qa-9goYLnY_lkdPH-s5ADKHnbLoehyvo6MSQzgsjXXG3lkHcfkZXq0RG6f4qbpRNDNtQJYkc1sFPrChXtCG7AA","signed_at":"2026-10-19T02:26:28.598Z","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"}}