{"ok":true,"service":"cibo.hk — HK IPO Allotment Analysis API","description":"IPO data extraction, analysis, and comparison for Hong Kong stocks. All data from HKEX filings and CCASS.","authenticated":false,"current_user":null,"auth_note":"All public IPO data endpoints are open — no auth required. Free-tier rate limits: 30 requests/min per IP, 5,000/day.","data_endpoints":{"stocks":{"method":"GET","path":"/api/stocks","auth":"public","returns":"{ok, stocks: [...]}"},"oversub":{"method":"GET","path":"/api/stocks/oversub","auth":"public","returns":"{ok, stocks: [...], n}"},"stocks_index":{"method":"GET","path":"/api/stocks/index","auth":"public","returns":"{ok, stocks: [...], total}"},"stocks_homepage":{"method":"GET","path":"/api/stocks/homepage","auth":"public","returns":"{ok, prelist: [...], recent: [...]}"},"stock_overview":{"method":"GET","path":"/api/stocks/{code}/overview","auth":"public","returns":"{ok, overview: {...}}"},"stock_prospectus":{"method":"GET","path":"/api/stocks/{code}/prospectus","auth":"public","returns":"{ok, prospectus: {...}, cornerstone: [...], financial: {...}}"},"stock_allotment_result":{"method":"GET","path":"/api/stocks/{code}/allotment-result","auth":"public","returns":"{ok, summary: {...}, concentration: [...], cornerstone: [...], tiers: [...]}"},"stock_allottee_profile":{"method":"GET","path":"/api/stocks/{code}/allottee-profile","auth":"public","returns":"{ok, profile: {s, type, country, province, gender, ah, py, hl, ...}}"},"stock_announcements":{"method":"GET","path":"/api/stocks/{code}/announcements","auth":"public","returns":"{ok, code, name, groups: [...], stats: {...}}"},"stock_buyback":{"method":"GET","path":"/api/stocks/{code}/buyback","auth":"public","returns":"{ok, code, name, records: [...], stats: {...}}"},"stock_disclosure":{"method":"GET","path":"/api/stocks/{code}/disclosure","auth":"public","returns":"{ok, code, name, items: [...], stats: {...}}"},"stock_summary":{"method":"GET","path":"/api/stocks/{code}/summary","auth":"public","returns":"{ok, summary: {...}}"},"stock_ccass":{"method":"GET","path":"/api/stocks/{code}/ccass","auth":"public","returns":"{ok, ccass: [...]}"},"stock_narrative":{"method":"GET","path":"/api/stocks/{code}/narrative","auth":"public","returns":"{ok, narrative: {...}}"},"dual_listing_price":{"method":"GET","path":"/api/dual-listing-price/{code}","auth":"public","returns":"{ok, price: ..., premium: ...}"},"compare":{"method":"GET","path":"/api/stocks/compare","auth":"public","returns":"{ok, comparisons: [...]}"},"market_insights":{"method":"GET","path":"/api/market-insights","auth":"public","returns":"{ok, insights: {...}}"},"allotment_tiers":{"method":"GET","path":"/api/allotment-tiers/{code}","auth":"public","returns":"{ok, tiers: [...]}"},"listing_day_close":{"method":"GET","path":"/api/listing-day-close-price/{code}","auth":"public","returns":"{ok, close_price: ...}"},"cmp_overview":{"method":"GET","path":"/api/cmp/overview","auth":"public","returns":"{ok, overview: [...]}"}},"chart_endpoints":{"frozen_calendar":{"method":"GET","path":"/api/charts/frozen-calendar","auth":"public","returns":"Chart data for frozen period calendar"},"scatter_oversub_pnl":{"method":"GET","path":"/api/charts/scatter-oversub-pnl","auth":"public","returns":"Scatter chart data: oversubscription vs PnL"}},"ranking_endpoints":{"sponsors":"/api/cache/rankings/sponsors","underwriters":"/api/cache/rankings/underwriters","cornerstone":"/api/cache/rankings/cornerstone","coinvestment":"/api/cache/rankings/coinvestment"},"user_endpoints":{"me":{"method":"GET","path":"/api/user/me","auth":"pcell JWT","returns":"{ok, user: {user_id, username}}"},"watchlist":{"method":"GET","path":"/api/user/watchlist","auth":"pcell JWT","returns":"{ok, watchlist: [stock_codes]}"},"watchlist_toggle":{"method":"POST","path":"/api/user/watchlist/{code}","auth":"pcell JWT","returns":"{ok, watchlist: [...]}"},"preferences":{"method":"GET/PUT","path":"/api/user/preferences","auth":"pcell JWT","returns":"{ok, preferences: {...}}"}},"listing_day_close_batch":{"method":"GET|POST","path":"/api/listing-day-close-prices-batch","auth":"public","returns":"{ok, data: {code: {price, change_pct, volume, date}}}"},"blog_endpoints":{"list":{"method":"GET","path":"/api/blog/posts","auth":"public","returns":"{ok, posts: [...], total}"},"detail":{"method":"GET","path":"/api/blog/posts/{slug}","auth":"public","returns":"{ok, post: {...}}"}},"cross_market_endpoints":{"full_market_list":{"method":"GET","path":"/api/stocks/full-market","auth":"public","returns":"{ok, companies: [...], total}"},"hynix_snapshot":{"method":"GET","path":"/api/hynix/snapshot","auth":"public","returns":"{ok, data: {instruments, fx_rates, base_price_krw}}"},"a_share_etf_overview":{"method":"GET","path":"/api/a-share-etf/overview","auth":"public","returns":"{ok, overview: {...}, margin: {...}}"}},"sdk_mcp":{"sdk":{"name":"pcell-sdk","install":"pip install pcell-sdk","description":"Python SDK for pcell.si community features only — not required for cibo IPO data."},"mcp":{"name":"cibo-mcp","endpoint":"https://cibo.hk/mcp","transport":"streamable-http","description":"Remote Streamable HTTP MCP server for cibo.hk — 58 tools. No pip install, no auth.","config":{"mcpServers":{"cibo":{"url":"https://cibo.hk/mcp"}}}}},"interfaces":{"rest_api":"https://cibo.hk/api/","well_known":"https://cibo.hk/.well-known/agent-protocol","web_ui":"https://cibo.hk/","llms_txt":"https://cibo.hk/llms.txt"},"capabilities":[{"method":"GET","path":"/api/stocks","auth":"public","description":"List all IPO stocks with basic info (code, name, listing date)."},{"method":"GET","path":"/api/stocks/oversub","auth":"public","description":"Batch oversubscription + frozen capital for all stocks with allotment data. Query: ?year=2026.","params":{"year":"optional listing year filter (e.g. 2026)"}},{"method":"GET","path":"/api/flash-events","auth":"public","description":"Derived flash-event feed (ipo_launch / allotment_result / listing / inclusion / prediction) as structured JSON for AI crawlers. Query: ?locale=zh-CN&limit=50&stock_code=07688.","params":{"locale":"zh-CN / zh-HK / en","limit":"max events (1-200, default 50)","stock_code":"optional 5-digit code to filter to one stock"}},{"method":"GET","path":"/api/stocks/index","auth":"public","description":"Stock cards grouped by index with filtering, pagination, search."},{"method":"GET","path":"/api/stocks/{code}/overview","auth":"public","description":"Full per-stock IPO analysis: subscription rates, allotment tiers, PnL scenarios, CCASS demographics."},{"method":"GET","path":"/api/stocks/{code}/prospectus","auth":"public","description":"Full prospectus info page data: prospectus details (offer price, mechanism, greenshoe, secondary listing), cornerstone investors, and IPO financial statements."},{"method":"GET","path":"/api/stocks/{code}/allotment-result","auth":"public","description":"Full allotment results page data: allotment summary (incl. international placing, greenshoe), placing concentration, cornerstone allocation + lock-up, Pool A/B tiers."},{"method":"GET","path":"/api/stocks/{code}/allottee-profile","auth":"public","description":"中签画像 (allottee profile): winner demographics from the registrar allotment dataset — total lots, person/company split, region/nationality, province, gender, age histogram + pyramid, HK ID letter/era/district."},{"method":"GET","path":"/api/stocks/{code}/announcements","auth":"public","description":"个股公告中心 (announcement center): all HKEXnews announcements for one stock, grouped by headline category with publish date and file URL."},{"method":"GET","path":"/api/stocks/{code}/buyback","auth":"public","description":"回购明细 (per-stock buyback): share buyback records for one stock, newest first, with per-day shares/amount and aggregate totals."},{"method":"GET","path":"/api/stocks/{code}/disclosure","auth":"public","description":"增减持明细 (per-stock disclosure-of-interest): DI records for one stock, newest first, with holder, capacity, event type, shares and pct."},{"method":"GET","path":"/api/stocks/{code}/summary","auth":"public","description":"Lightweight stock summary: key stats and tier classification."},{"method":"GET","path":"/api/stocks/{code}/ccass","auth":"public","description":"CCASS custodian demographics: type, province, gender, age distributions."},{"method":"GET","path":"/api/stocks/{code}/narrative","auth":"public","description":"AI-generated narrative (zh/en) summarizing the IPO's key characteristics."},{"method":"GET","path":"/api/stocks/compare","auth":"public","description":"Side-by-side comparison of up to 10 stocks. Query: ?codes=00001,00002","params":{"codes":"comma-separated stock codes"}},{"method":"GET","path":"/api/allotment-tiers/{code}","auth":"public","description":"Detailed allotment tier table: Pool A and Pool B subscription tiers with expected lots."},{"method":"GET","path":"/api/stocks/{code}/predict","auth":"public","description":"Full allotment prediction data (default predicted oversub/alpha) backing the prediction page."},{"method":"GET","path":"/api/stocks/{code}/predict/custom","auth":"public","description":"On-demand single-point allotment prediction for arbitrary parameters. Query: ?oversub=300&alpha=0.5&agent=knn_calibrated.","params":{"oversub":"final oversubscription multiple (optional, >0; omitted -> cibo predicted oversub)","alpha":"allocation-method coefficient in [0,1] (optional; omitted -> agent's recommended alpha)","agent":"agent key (optional, default knn_calibrated)"}},{"method":"GET","path":"/api/predict-agent-grid/{code}","auth":"public","description":"Pre-computed prediction grid (18 oversub x 5 alpha) for interpolation."},{"method":"POST","path":"/api/stocks/{code}/predict/batch","auth":"public","description":"Exact single-point predictions for a batch of (oversub, alpha) pairs in one request. Body: {\"points\":[{\"oversub\":300,\"alpha\":0.5}],\"agent\":\"knn_calibrated\"} (<=64 points).","params":{"points":"list of {oversub, alpha}","agent":"agent key (optional, default knn_calibrated)"}},{"method":"GET","path":"/api/listing-day-close-price/{code}","auth":"public","description":"First-day closing price for a single stock."},{"method":"GET|POST","path":"/api/listing-day-close-prices-batch","auth":"public","description":"Batch first-day closing prices. GET: ?codes=07688,01511 POST: {\"codes\":[...]}"},{"method":"GET","path":"/api/market-insights","auth":"public","description":"Cross-IPO market insights, trends, and aggregate analysis."},{"method":"GET","path":"/api/cmp/overview","auth":"public","description":"Cross-market comparison overview for peer stock context."},{"method":"GET","path":"/api/charts/frozen-calendar","auth":"public","description":"Frozen capital calendar: date series, daily max, regulatory milestones (for index page stacked bar chart)."},{"method":"GET","path":"/api/charts/scatter-oversub-pnl","auth":"public","description":"Oversubscription vs first-day P&L scatter plot data."},{"method":"GET","path":"/api/cache/rankings/sponsors","auth":"public","description":"Sponsor institution rankings by IPO involvement."},{"method":"GET","path":"/api/cache/rankings/underwriters","auth":"public","description":"Underwriter institution rankings by IPO involvement."},{"method":"GET","path":"/api/cache/rankings/cornerstone","auth":"public","description":"Cornerstone investor rankings."},{"method":"GET","path":"/api/cache/rankings/coinvestment","auth":"public","description":"Co-investment rankings."},{"method":"GET","path":"/api/cache/stocks/{code}/analysis","auth":"public","description":"Pre-computed per-stock analysis (tier data, demographic distributions, HK letter/era breakdowns)."},{"method":"GET","path":"/api/cache/ab","auth":"public","description":"A-tail vs B-head comparison matrix."},{"method":"GET","path":"/api/cache/frozen-calendar","auth":"public","description":"Pre-computed frozen capital calendar (dates, series, max_daily)."},{"method":"GET","path":"/api/cache/scatter","auth":"public","description":"Pre-computed scatter plot data (oversubscription vs P&L)."},{"method":"GET","path":"/api/cache/status","auth":"public","description":"Freshness status for all cache tables (row count, last_built timestamp)."},{"method":"GET","path":"/api/blog/posts","auth":"public","description":"List published blog posts with pagination. Query: ?locale=zh-CN&limit=20&offset=0"},{"method":"GET","path":"/api/blog/posts/{slug}","auth":"public","description":"Get a single published blog post by slug."},{"method":"GET","path":"/api/stocks/full-market","auth":"public","description":"Directory of all HK-listed companies (code, zh/en name, board, isin). Query: ?search=&limit=200.","params":{"search":"optional substring on code/name","limit":"max companies (default 200)"}},{"method":"GET","path":"/api/hynix/snapshot","auth":"public","description":"SK Hynix cross-market arbitrage snapshot (instruments with premium_pct, FX rates, base price)."},{"method":"GET","path":"/api/a-share-etf/overview","auth":"public","description":"A-share ETF capital flow overview (merged proxy, ETF inflow, margin). Query: ?limit=60."},{"method":"GET","path":"/api/user/me","auth":"optional JWT","description":"Current user info from JWT. Returns {user: null} when unauthenticated."},{"method":"GET","path":"/api/user/watchlist","auth":"pcell JWT","description":"User's watchlist as array of stock codes."},{"method":"POST","path":"/api/user/watchlist/{code}","auth":"pcell JWT","description":"Toggle a stock in/out of the watchlist. Returns {in_watchlist: bool}."},{"method":"GET|PUT","path":"/api/user/preferences","auth":"pcell JWT","description":"Get or update saved user preferences JSON."},{"method":"GET","path":"/api/","auth":"public","description":"API discovery root: lists all endpoints with methods, auth, and return types."},{"method":"GET","path":"/.well-known/agent-protocol","auth":"public","description":"Machine-readable agent protocol: service description, auth methods, data categories, recommended agent onboarding flow."},{"method":"GET","path":"/health","auth":"public","description":"Health check: uptime, DB stats, agent status, cache warmth, pipeline health (no pid or internal error messages)."},{"method":"GET","path":"/api/agents","auth":"public","description":"Agent heartbeat status, last run, age and duration (public leaderboard; internal error messages omitted)."}]}