# IL Observer > A free, read-only on-chain LP impermanent-loss tracker. Drop in a wallet > address, get a per-position breakdown comparing current LP value against > a HODL benchmark, with fees and rewards reported separately. The core UI > and scan/share API stay free; an optional x402 endpoint can return a paid > deep multi-position JSON export. IL Observer scans EVM and Solana wallets, identifies open LP positions across nine protocols, replays each position's lifecycle on-chain, and returns a canonical impermanent-loss number plus single-asset HODL references for both tokens. The site is deployed at https://il-observer.io. Supported protocols: Uniswap V3, Uniswap V4, SushiSwap V3, PancakeSwap V3, Aerodrome Slipstream, Ekubo, Orca Whirlpool, Raydium CLMM, ProjectX (HyperEVM). ## Public API The core API is HTTP/JSON, no auth required, no rate limit advertised. The full machine-readable spec is at https://il-observer.io/api/openapi.json. - `GET /api/health` — service status, configured RPC providers, demo count - `GET /api/protocols` — verified-demo registry plus protocol coverage status - `POST /api/scan` — body `{address, demoProtocolId?, refresh?}`; returns the matched position, IL, fees, rewards, lifecycle events, and a snapshot ID - `GET /api/x402/positions?address=` and `POST /api/x402/positions` — x402-protected deep scan returning all strictly renderable open positions plus per-candidate unavailable reasons as JSON - `GET /api/snapshot/` — fetch a cached snapshot by 10-character hex id - `POST /mcp` — stateless MCP JSON-RPC endpoint exposing read-only protocol and scan tools - `GET /.well-known/api-catalog` — RFC 9727 linkset for API discovery - `GET /.well-known/x402` — x402 payment discovery metadata - `GET /.well-known/mcp/server-card.json` — MCP server card for agent discovery - `GET /.well-known/agent-skills/index.json` — Agent Skills discovery index - `GET /.well-known/oauth-protected-resource` — OAuth protected-resource metadata; OAuth access tokens are not required or issued - `GET /sitemap.xml` — sitemap including the homepage, OpenAPI spec, and every verified-demo share page - `GET /robots.txt` — crawl rules (everything is allowed) - `GET /llms.txt` — this file - `GET /` — HTML by default; send `Accept: text/markdown` for a concise agent-readable Markdown summary ## Share pages Every successful scan produces a static share page at `/s/.html`. Pages are pure server-rendered HTML — no JavaScript required to read them — and carry both OpenGraph tags and JSON-LD structured data. Markdown content negotiation is supported: send `Accept: text/markdown` to receive a plaintext breakdown instead of HTML. OG card image: `/og/.png` (1200×630). ## Verified demo addresses Each entry below is a real wallet that holds a real, currently-open LP position. They're the canonical examples for testing the API or browsing the share-page format. - Uniswap V3 (Ethereum, WETH / POLK): `/api/scan` body `{"address":"0x1b84a9c353f4735853bdcf0a50f383e7aaf2cdff"}` - Uniswap V4 Vanilla (Ethereum, ETH / GROW): `/api/scan` body `{"address":"0xfebb27451296f94e8b2e26ad0fef098dafb760c0"}` - Aerodrome Slipstream (Base, cbBTC / LBTC): `/api/scan` body `{"address":"0x738e66480DF3A1B89778AC5557153878bC581fB9"}` - PancakeSwap V3 (BSC, ETH / WBNB): `/api/scan` body `{"address":"0x2b53795d0731461c835a129797b62178d9cccc2a"}` - SushiSwap V3 (Ethereum, SPC / USDC): `/api/scan` body `{"address":"0xa12345d7dce40529e40df7edc122723d9c26bbc0"}` - Ekubo (Ethereum, ETH / WBTC): `/api/scan` body `{"address":"0xa0766fd5ecd0f472de2a77f9048653724fe2780f"}` - Orca Whirlpool (Solana, SOL / RENDER): `/api/scan` body `{"address":"B5cYjddYUh6S4K7zo8nL4LLHYh48Ta4x6FM9Cvz6L7Pp"}` - Raydium CLMM (Solana, SOL / CRCLX): `/api/scan` body `{"address":"CcrknJyMF6AtAtr8xaV7a4BW6NiLNP5H9vo4SqhWHpE4"}` - ProjectX (HyperEVM, WHYPE / USDC): `/api/scan` body `{"address":"0x4d7c222e006cbe5f1bb9c81b38af6062c709764b"}` ## Methodology - Open positions only — closed positions are excluded by design - HODL reference uses pool-price-consistent current marks, anchored to external USD prices (DefiLlama) - Impermanent loss is reported separately from fees and from staking rewards; we never fold them together - For staked Aerodrome positions, pool fees accrue to voters via FeesVotingReward (not the LP), and AERO emissions are reported as rewards - Solana CLMM positions use exact-remaining-lot replay so partial withdrawals don't pollute the entry basis ## Source GitHub: https://github.com/ZaK3939/il-observer ## Contact The site exposes `POST /api/support-request` for protocol coverage requests.