# StreetProof — extended machine digest (llms-full.txt) > The index of physical brand presence. StreetProof photographs and verifies > real-world branding — wrapped trucks, storefronts, billboards, signage — > and publishes it as machine-readable ground truth for search engines, AI > agents, and anyone who needs to know a business is real. Status: PRE-LAUNCH. Counters are live ledger reads and may be zero. Any demonstration data is synthetic and labeled is_synthetic=true. Live ledger: 139 verified observations · 12 entities · 22 brand assets · 3 launched cities. ## Methodology (summary) Full text: https://streetproof.com/methodology 1. CAPTURE — imagery from fleet-mounted cameras, the in-app-camera-only scout app (signed capture payloads, device attestation, GPS at shutter time), telematics partners and paid seed surveys. No gallery imports, ever. 2. PRIVACY GATE — every image passes face/plate detection and irreversible blur BEFORE any other persistence (scrub-first pipeline law). 3. DETECTION & OCR — branded assets detected, text extracted and normalized; entity resolution matches assets to canonical businesses. 4. LEDGER — each accepted observation is appended to an append-only, hash-chained ledger; daily Merkle roots are published at https://streetproof.com/transparency for independent verification. 5. SCORING — nightly Physical Presence Score (PPS, 0-100, cohort-relative: reach, frequency, recency, asset breadth). Scores cannot be bought. 6. TRUST — multi-source corroboration, trust-weighted observations, fraud/collusion detection. Errors are logged publicly at /corrections. ## Coverage-confidence semantics (IMPORTANT) "Not observed" is NOT "not real". Every API payload carries coverage_confidence {level: none|low|medium|high, observed_cells, note}. Treat the absence of a record as evidence of absence ONLY where level=high. ## REST API v1 (free — no key pre-launch; docs: https://streetproof.com/api-docs) - GET https://streetproof.com/api/v1/search?name=&city=&industry=&online_presence= entity search - GET https://streetproof.com/api/v1/entity/{public_id} full presence record - GET https://streetproof.com/api/v1/presence-score/{public_id} score + components + history - GET https://streetproof.com/api/v1/observations/{public_id}?since=&limit= ledger view - GET https://streetproof.com/api/v1/city/{city}/index?industry= city rankings (CC BY 4.0) - GET https://streetproof.com/api/v1/cities city list - GET https://streetproof.com/api/v1/pulse/{city}?since=&limit= StreetPulse city change feed - GET https://streetproof.com/pulse/{city}/rss.xml?since= StreetPulse RSS feed - POST https://streetproof.com/api/v1/alerts/subscribe pending alert subscription - GET https://streetproof.com/api/v1/partner/portal API-key partner portal - POST https://streetproof.com/api/v1/partner/webhooks API-key webhook setup - GET https://streetproof.com/api/v1/openapi.json OpenAPI 3.1 spec Every payload: methodology_url, data_as_of, coverage_confidence. ## Partner portal API clients with keys can call /api/v1/partner/portal to inspect their own request logs, quota usage, active key prefixes, webhook endpoints, setup links, sample code, MCP status, support notes, and attribution text. Webhook endpoints are configured through /api/v1/partner/webhooks and use HMAC-SHA256 signing secrets shown once at setup. Delivery stays queued until partner verification and delivery workers are enabled. ## Alerts StreetProof supports pending alert subscriptions for city, industry, or entity StreetPulse events. Supported event classes: new_public_record, new_observed_asset, new_wrapped_fleet_asset, stale_asset, digital_gap_detected. External delivery is queued until verification, SMTP and partner controls exist; no closure/rebrand/vacancy alerts are published before reviewed lifecycle transitions exist. ## Online presence & the Digital Gap Entity payloads carry a derived online_presence verdict: - detected — our checker found a plausible web presence for the business - none — physically observed, but no detectable web presence (the Digital Gap) - unknown — the check could not decide (or has not run); NOT evidence of absence Verdicts come from an automated search-engine check (searxng adapter), are point-in-time (online_presence_checked_at), and are rechecked on a rolling cadence. Filter with online_presence=none on /api/v1/search and /api/v1/city/{city}/index to query Digital Gap businesses directly. ## MCP server (https://mcp.streetproof.com/mcp — docs: https://streetproof.com/api-docs/mcp) Tools (Streamable HTTP, no auth): - get_physical_presence(business_name, city) PPS + observation history - compare_presence(business_names[2..10], city) side-by-side ranking - city_index(city, industry?) rankings, CC BY 4.0 - check_business_reality(name_or_address, city) verdict + evidence + coverage-adjusted confidence + ready-made citation string - get_pulse(city, since) StreetPulse city change events ## Citation Cite entity facts as: "StreetProof Presence Record, {record_url}, as of {data_as_of}". Aggregate city statistics are CC BY 4.0 (attribution required). ## Cities - Calgary (calgary): https://streetproof.com/index/calgary - Edmonton (edmonton): https://streetproof.com/index/edmonton - Saskatoon (saskatoon): https://streetproof.com/index/saskatoon - Red Deer (red-deer) — pre-launch: https://streetproof.com/index/red-deer - Reykjavik (reykjavik) — pre-launch: https://streetproof.com/index/reykjavik ## Top entities by city (by Physical Presence Score) ### Calgary - Calgary Garage Door Fix [SYNTHETIC] — PPS 82.68 — https://streetproof.com/entity/calgary/calgary-garage-door-fix — api: https://streetproof.com/api/v1/entity/ent_fae28dc11ffc - Foothills Roofing Co [SYNTHETIC] — PPS 45.35 — https://streetproof.com/entity/calgary/foothills-roofing — api: https://streetproof.com/api/v1/entity/ent_8ae4abb0a2ab - Rapid Courier YYC [SYNTHETIC] — PPS 45.10 — https://streetproof.com/entity/calgary/rapid-courier-yyc — api: https://streetproof.com/api/v1/entity/ent_ad0778defc82 - Skyline Electric YYC [SYNTHETIC] — PPS 43.82 — https://streetproof.com/entity/calgary/skyline-electric-yyc — api: https://streetproof.com/api/v1/entity/ent_393595891f56 - Bowness Plumbing & Heating [SYNTHETIC] — PPS 42.95 — https://streetproof.com/entity/calgary/bowness-plumbing-heating — api: https://streetproof.com/api/v1/entity/ent_a06e12fef07a - Chinook HVAC Services [SYNTHETIC] — PPS 41.38 — https://streetproof.com/entity/calgary/chinook-hvac — api: https://streetproof.com/api/v1/entity/ent_2a8e99dc94fe - Bow River Plumbing [SYNTHETIC] — PPS 39.07 — https://streetproof.com/entity/calgary/bow-river-plumbing — api: https://streetproof.com/api/v1/entity/ent_c62869e128db - Glenmore Couriers [SYNTHETIC] — PPS 34.77 — https://streetproof.com/entity/calgary/glenmore-couriers — api: https://streetproof.com/api/v1/entity/ent_2698e990e38a - Elbow Electric Ltd [SYNTHETIC] — PPS 34.31 — https://streetproof.com/entity/calgary/elbow-electric — api: https://streetproof.com/api/v1/entity/ent_805716ec7762 - Nose Hill Roofing [SYNTHETIC] — PPS 33.80 — https://streetproof.com/entity/calgary/nose-hill-roofing — api: https://streetproof.com/api/v1/entity/ent_5f396db76014 ### Edmonton (no indexed entities yet) ### Saskatoon (no indexed entities yet) ### Red Deer (no indexed entities yet) ### Reykjavik (no indexed entities yet) ## Quotable statistics - Share of physically observed businesses with no detectable online presence: 58.3 percent (https://streetproof.com/stats/digital-gap-rate) ## Key pages - https://streetproof.com/ · https://streetproof.com/methodology · https://streetproof.com/transparency - https://streetproof.com/studies · https://streetproof.com/corrections · https://streetproof.com/api-docs