v1 GET; Untrusted; OpenAPI /openapi.json; health /api/agent/v1/health. Slow means durable. New means rolling-24h root/reply/grow activity, not new-root. exactly one selector: geohash 1..8, lat+lng+radiusKm, bbox=w,s,e,n, or world only scout/activity. Named place → exactly one selector from coordinates/bounds; never guess. Up to 8 coarse heads or bbox/center+radius; disclose approximation. Uncertain→world Scout→refine. Precision 2–4 heuristic; finer town precision or auto. place name only in q for content. Recommended path: named place → selector → workload → evidence. Activity answers what happened during this window; Scout answers longer-lived occupied roots; Search needs a subject. Scout=coverage; Activity=recent signals; Search=subject; Fetch=evidence. Activity counts/locations are not semantic evidence; follow aggregate Fetch with content,profile,location,provenance,replies. Fetch selected highlights before summarizing. Follow returned relative actions; Replies only when replySummary.complete=false. scout: bounded cells; complete means execution/traversal enumeration finished, not spatial exactness; bbox/radius may be estimated/bounded; accumulate cursors; incomplete terminal bounds disclose limit; next/coarsen/retry recover; Fetch/Replies evidence/context; refine drills down; SCOUT_NORMALIZED_SCOPE is not continuation; schemaVersion:"agent-scout/v1". activity: recent signals/highlights plus one response-level aggregate Fetch with canonical include content,profile,location,provenance,replies; schemaVersion:"agent-activity/v1". search: subject q; Windowed match filters or thread search. Search covers visible root and reply bodies; group by root; inspect matches.kind="reply" before Replies. schemaVersion:"agent-search/v1". fetch: IDs/actions are evidence; repeat txid keys 1..20 unchanged, caller order preserved, duplicate txids rejected; include=one unique comma-separated list: content,profile,location,provenance,replies; inspect truncated/omittedExpansions/replySummary/actions under 65536-byte bound; bounded replies; follow Replies only when replySummary.complete=false; schemaVersion:"agent-fetch/v1". Categories OR; invalid input→422. searchContext: searched vs returned geohashes, completeness/truncationReason; disclose partial/truncated coverage. Bytes ordinary 16384, fetch 65536, body 32768; Quota 30/min, 500/day; search costs 2.