Skip to content
Docs

Edge cases — failure modes and observed behavior

Every edge case names the failure mode AND what SiteScout actually does (error message / fallback), not just the risk. Key-gated observations are marked ⏳…

On this page

Geocoding

FailureObserved behavior
Empty geocode result (all fallback queries)Candidate marked unevaluable; listed in the report's "Excluded from ranking" section with the trace refs of the failed queries. Never silently dropped, never scored.
Ambiguous geocode (multiple result_types)Preference order amenity/building > street > locality > city (+ confidence); chosen type + alternative count recorded in the trace summary.
Invalid API key (HTTP 401)Client fails fast — no retry. CLI prints BLOCKED: missing GEOAPIFY_API_KEY (unset) or surfaces the 401 message.
HTTP 429 / 5xx / timeoutExponential backoff, 3 attempts, jitter (src/mcp/client.ts). Then the error is traced and the run continues/aborts per phase.

Places & routing

FailureObserved behavior
search_places returns 0 POIsCounts are 0 — the scoring model's data-density floor (INSUFFICIENT_DATA_POI_FLOOR = 5) then excludes the candidate from ranking instead of scoring "no competition" as good.
Route matrix cell unreachable (NaN)Cell dropped from the mean; if NO cell is finite, meanAccessDurationS stays unset → accessibility scores neutral 0.5, disclosed in the trace.
traffic: approximated vs free_flowAlways approximated (traffic-aware); query timestamp is in the trace. Times are time-of-day dependent — disclosed in every report's limitations.

Geometry

FailureObserved behavior
Buffer/measure/relation call failsCatchment area falls back to the analytic circle area (πr²); the trace records the failed call. Report still discloses the buffer approximation.
MCP isError: true on any callRecorded in the trace with isError, never retried (validation failure). Downstream treats the evidence as missing, not zero.

Budget & quota

FailureObserved behavior
--budget cap exceeded during planningPlanning aborts BEFORE the call is sent: budget exceeded: planned X > cap Y. No partial spend beyond the cap.
Free-tier daily quota (3,000 credits/day)⏳ PENDING live observation. Estimated per-question cost ≈ 20–40 credits; the printed ledger lets the operator stay inside quota.

Offline / reproducibility

FailureObserved behavior
sitescout report <qid> without trace/manifestClear error naming the missing files and the ask command that produces them.
Corrupted trace filetrace validate reports the exact line and failure (bad JSON / schema / seq order).
No network at allEvery network call throws through GeoapifyMcpClient; nothing is mocked, nothing is faked — the run fails loudly.

On this page