{"path":"/lp-intelligence","service_name":"Lp Intelligence","method":"POST","allowed_methods":["POST"],"category":"Portfolio & Accounts","class":"read-only","summary":"Plain-language Uniswap LP position advice with pool APR, token composition and range diagnostics.","description":"Read an exact V3/V4 NFT position on Robinhood Chain (4663), its composition, range status, plain-language advice and independently cached pool APR. Choose a 1--30 day horizon and an objective. Quantitative range comparisons carry their model limits; unverified tokens or hooks cannot earn investment eligibility. No swap, liquidity change or transaction is prepared. $0.02 USDC on Base per call.","schema":{"params":null,"body":{"type":"object","properties":{"position":{"type":"object","properties":{"chainId":{"type":"number","const":4663},"positionManager":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"tokenId":{"type":"string","pattern":"^(0|[1-9][0-9]{0,77})$"},"expectedOwner":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},"required":["chainId","positionManager","tokenId"],"additionalProperties":false},"evidenceSetId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,80}$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":60},"token0ChangePct":{"type":"number","minimum":-90,"maximum":100},"token1ChangePct":{"type":"number","minimum":-90,"maximum":100}},"required":["label","token0ChangePct","token1ChangePct"],"additionalProperties":false},"minItems":1,"maxItems":8},"advisory":{"type":"object","additionalProperties":false,"properties":{"horizonDays":{"type":"integer","minimum":1,"maximum":30,"default":7},"objective":{"type":"string","enum":["understand","maintain-fee-uptime","reduce-concentration"],"default":"understand"}},"description":"User objective and comparison horizon only. Data providers, volatility, costs and forecasts cannot be supplied by callers."}},"required":["position"],"additionalProperties":false},"note":"Request schema derived from the Otto catalog -- not output-measured."},"sample_output":null,"cost":{"price_usd":0.02,"pricing_mode":"fixed","currency":"USDC","pricing_note":"Indicative. The live 402 PAYMENT-REQUIRED header is the single source of truth -- set maxPayment from it, never from this map.","settlement_note":"Settlement is on success only: a 4xx/5xx response is not settled, so a rejected or failed call does not charge you. (A 200 that returns an error body still settles.)"},"auth":{"type":"x402","note":"Pay per call in USDC via x402 V2 (EIP-3009 or Permit2). The networks THIS route accepts are in its own 402 accepts[] (returned in both the PAYMENT-REQUIRED header and the 402 JSON body): USDC on Base is accepted on every route, Solana only where that route lists it."},"signals":[{"id":"otto-money-back-guarantee","type":"guarantee","summary":"Money-back guarantee on Otto's own services: if a paid result misses, request a refund via /feedback with the payment tx_hash ($0.01 per tx, up to 10×/day system cap). Otto's own services and Full Auto only -- not third-party Bazaar picks.","status":"active","last_verified":"2026-07-01"},{"id":"otto-first-party","type":"characteristic","summary":"Served by an Otto-operated agent backend (first-party), not a re-listed third-party marketplace endpoint.","status":"active","last_verified":"2026-07-01"},{"id":"required-param-400","type":"gotcha","summary":"Requires a specific parameter -- omitting it returns HTTP 400. A 4xx is not settled, so a rejected call is not charged; read the request schema before paying.","status":"derived","last_verified":"2026-07-01"}],"patterns":[],"measured":{"quality_score":null,"uptime_pct":null,"measured_at":null,"note":"Not yet measured by the QA crawler -- quality/uptime stay null, never fabricated."},"catalog_hash":"65e99933815db934f46db339d84d836f71960b537d415ead061b31aea304d2a9","snapshot_generated_at":"2026-09-21T09:07:27.998Z","you_were_not_charged":true}