Agent setup: authorize Sight MCP and ask your agent to call
get_tracking_setup. It configures this integration automatically.
FastAPI
FastAPI/Starlette ASGI middleware that forwards AI-crawler page
requests to Sight's POST /api/v1/track, preserving the original
User-Agent. Crawlers don't run JavaScript, so the browser tracker
never fires for them unless they also fetch the script URL. This is the
origin-side path.
Humans are not recorded here — they still use the browser tracker. Tracking every request would double-count people.
Part of Sight — see
sightapp/sight-backend
SPEC.md and tasks/plan.md (Track B4).
Install
Usage
GET requests only; other methods are ignored. The send is scheduled
via asyncio.create_task and never awaited on the response path — a
slow/unreachable Sight backend adds zero latency to the real request.
The UA token list matches sight-backend's internal/api/agents.go
(GPTBot, ClaudeBot, PerplexityBot, …). Keep them in sync when that list
grows.
Verify
GPTBot should show up. A request with a Chrome UA should not.
Tests
5 tests, all passing against a real FastAPI TestClient (no mocked
framework internals): agent detection, a GPTBot GET producing exactly
one tracked call, a human GET producing none, and the required-api_key
check.