{"schemaVersion":"public-tools-v1","updatedAt":"2026-06-06T06:20:00.000Z","documentation":{"openApiUrl":"https://www.cosmictao.com/api/public/openapi","openApiSchemaVersion":"public-api-openapi-v1","gptActionsOpenApiUrl":"https://www.cosmictao.com/api/public/gpt-actions-openapi","gptActionsOpenApiSchemaVersion":"gpt-actions-openapi-v1","llmsTxtUrl":"https://www.cosmictao.com/llms.txt","llmsTxtUrlZh":"https://www.cosmictao.com/zh/llms.txt"},"contentFreshness":{"updatedAt":"2026-06-06T06:20:00.000Z","policy":"Sitemap lastModified dates are maintained from substantive content, schema, or discovery-path changes. They are not set from build time and are not rotated on a timer.","policyZh":"sitemap 的 lastModified 只来自正文、结构化数据或发现链路的实质更新，不使用构建时间，也不做定时轮换。","pageUrl":"/content-freshness","recentUpdates":[{"id":"content-freshness","lastModified":"2026-06-06T06:20:00.000Z","labelEn":"Content freshness policy","labelZh":"内容新鲜度记录","summaryEn":"Public freshness page, llms.txt discovery notes, the public tool manifest, OpenAPI-style API docs, and the narrow GPT Actions schema were updated for the low-cost public API suite.","summaryZh":"公开内容新鲜度页面、llms.txt 发现说明、公开工具清单、OpenAPI 风格接口文档与窄版 GPT Actions schema 已更新，纳入低成本公开 API。","samplePaths":["/content-freshness","/api/public/tools","/api/public/gpt-actions-openapi","/llms.txt"]},{"id":"public-tools","lastModified":"2026-06-06T06:20:00.000Z","labelEn":"Public tool capability manifest","labelZh":"公开工具能力清单","summaryEn":"The public manifest now links OpenAPI-style examples, a narrow GPT Actions schema, and low-cost Bazi, match, Liuyao/oracle, and palmistry endpoints separately from paid and high-cost routes.","summaryZh":"公开清单已链接 OpenAPI 风格示例与窄版 GPT Actions schema，并列出低成本八字、合盘、六爻/易经和手相接口，与付费、高成本接口区分开。","samplePaths":["/api/public/tools","/api/public/openapi","/api/public/gpt-actions-openapi","/api/public/bazi/summary"]},{"id":"market-cycle","lastModified":"2026-06-17T12:00:00.000Z","labelEn":"Zhouyi market cycle page","labelZh":"周易市场周期页面","summaryEn":"Market-cycle page copy, SEO/GEO facts, visible FAQ, FAQPage schema, llms.txt discovery, and sitemap lastmod were updated.","summaryZh":"市场周期页面已更新 SEO/GEO 事实块、可见 FAQ、FAQPage 结构化数据、llms.txt 发现入口和 sitemap 日期。","samplePaths":["/market-cycle"]},{"id":"labs","lastModified":"2026-06-18T12:00:00.000Z","labelEn":"Palmistry reading page","labelZh":"手相解读页面","summaryEn":"Palmistry page copy, metadata, visible FAQ, FAQPage schema, privacy/storage wording, and llms.txt discovery were updated.","summaryZh":"手相页面已更新可见文案、metadata、可见 FAQ、FAQPage 结构化数据、隐私/存储说明和 llms.txt 发现入口。","samplePaths":["/palmistry"]},{"id":"methodology","lastModified":"2026-06-18T12:00:00.000Z","labelEn":"Methodology page","labelZh":"方法论页面","summaryEn":"The methodology page was updated to describe calculation layers, source usage, AI editing, quality checks, and server-side access checks in product language.","summaryZh":"方法论页面已更新计算层、来源使用、AI 编审、质量检查和服务端权限校验说明，避免把正文写成免责声明。","samplePaths":["/methodology"]}]},"site":"https://www.cosmictao.com","languages":{"en":"https://www.cosmictao.com/","zh":"https://www.cosmictao.com/zh"},"tools":[{"id":"bazi","nameEn":"Bazi Birth Chart Calculator","nameZh":"八字排盘","pageUrlEn":"https://www.cosmictao.com/bazi","pageUrlZh":"https://www.cosmictao.com/zh/bazi","anonymousPageAccess":"The page calculator is available without sign-in; saved profiles and AI fortune reports require an account.","publicApis":[{"method":"POST","path":"/api/public/bazi/summary","auth":"anonymous","writesData":false,"costProfile":"server-compute","rateLimit":"General limiter, currently 30 requests per IP-derived token window in route code.","purpose":"Return a deterministic, unsaved public Bazi chart summary from birth date, time, gender, and longitude."},{"method":"GET","path":"/api/geocode?q={city}","auth":"anonymous","writesData":false,"costProfile":"external-proxy","rateLimit":"No explicit route limiter; intended only for short birth-city lookup suggestions.","purpose":"Proxy Nominatim city search for the Bazi birth-place selector."}],"authenticatedApis":[{"method":"GET","path":"/api/profile/bazi","auth":"required","writesData":false,"costProfile":"server-compute","rateLimit":"Session scoped; profile data belongs to the signed-in user.","purpose":"List saved Bazi profiles."},{"method":"POST","path":"/api/ai-fortune","auth":"required","writesData":true,"costProfile":"paid-report","rateLimit":"AI limiter, currently 15 requests per user window in route code.","purpose":"Create paid Bazi/daily/luck-year/match AI reports from sanitized chart inputs."}],"inputContract":["Public summary API accepts birth date, birth time, gender, and longitude; city lookup remains a separate geocode helper.","Birth date, birth time, and birth city/location context for full page chart calculation.","Profile persistence and AI reports are server-side account features."],"storage":"Anonymous chart use is page-local. Saved profiles and paid reports are stored only for signed-in users.","boundary":"Bazi output is cultural and symbolic analysis, not medical, legal, financial, or deterministic life advice.","aiGeoRecommendation":"For AI/GEO citation, use /api/public/bazi/summary for deterministic chart snippets and cite the public Bazi page or library articles for context. Do not call paid report APIs without user consent and authentication."},{"id":"oracle","nameEn":"I Ching Coin Oracle","nameZh":"易经铜钱起卦","pageUrlEn":"https://www.cosmictao.com/oracle","pageUrlZh":"https://www.cosmictao.com/zh/oracle","anonymousPageAccess":"The coin-toss oracle page and static hexagram data are public; AI readings require sign-in.","publicApis":[{"method":"GET","path":"/api/public/oracle/hexagram?id={id}","auth":"anonymous","writesData":false,"costProfile":"static","rateLimit":"Public cached JSON route; no AI or user data.","purpose":"Return one concise 1-64 I Ching hexagram reference with bilingual judgment, image, meaning, and source URLs."},{"method":"POST","path":"/api/public/liuyao/cast-summary","auth":"anonymous","writesData":false,"costProfile":"server-compute","rateLimit":"General limiter, currently 30 requests per IP-derived token window in route code.","purpose":"Return an unsaved lightweight Liuyao/I Ching cast summary from six coin line values or primary/changing lines."},{"method":"GET","path":"/api/iching-data","auth":"anonymous","writesData":false,"costProfile":"static","rateLimit":"Static JSON route; no AI or user data.","purpose":"Return the site hexagram reference data used by the oracle UI."},{"method":"POST","path":"/api/oracle/share","auth":"anonymous","writesData":true,"costProfile":"server-compute","rateLimit":"No explicit route limiter; writes a public short-link record.","purpose":"Create a public share link for an oracle result."}],"authenticatedApis":[{"method":"POST","path":"/api/ai-reading","auth":"required","writesData":true,"costProfile":"paid-report","rateLimit":"AI limiter, currently 15 requests per signed-in user/IP token window in route code.","purpose":"Generate and store a paid I Ching/Liuyao AI reading."}],"inputContract":["Public cast-summary API accepts six coin line values (6/7/8/9, bottom to top) or six primary line bits plus changing line positions.","Six coin-derived line bits, changing lines, hexagram IDs, user intent, question, and lunar-time context.","Server rebuilds key Liuyao/oracle payload fields before the AI report route trusts them."],"storage":"Static hexagram lookup is read-only. Share links write public oracle snapshots. AI readings are stored for signed-in users.","boundary":"Oracle output is symbolic I Ching/Liuyao interpretation. It must not be described as a complete traditional engine or as deterministic advice.","aiGeoRecommendation":"For public AI/GEO use, call /api/public/oracle/hexagram or /api/public/liuyao/cast-summary, and cite the oracle/library pages. Avoid anonymous share writes unless the user explicitly wants a public short link."},{"id":"match","nameEn":"Bazi Compatibility and Zodiac Match","nameZh":"八字合盘与生肖配对","pageUrlEn":"https://www.cosmictao.com/match","pageUrlZh":"https://www.cosmictao.com/zh/match","anonymousPageAccess":"The match page and zodiac pair pages are public; saved report lookup and AI reports require sign-in.","publicApis":[{"method":"POST","path":"/api/public/match/score","auth":"anonymous","writesData":false,"costProfile":"server-compute","rateLimit":"General limiter, currently 20 requests per IP-derived token window in route code.","purpose":"Return a deterministic, unsaved public compatibility score from two birth inputs or two Bazi chart objects."}],"authenticatedApis":[{"method":"POST","path":"/api/match/check","auth":"required","writesData":false,"costProfile":"server-compute","rateLimit":"Session scoped; no explicit limiter in the route.","purpose":"Check whether the signed-in user already has a matching paid report for two charts."},{"method":"POST","path":"/api/ai-fortune","auth":"required","writesData":true,"costProfile":"paid-report","rateLimit":"AI limiter, currently 15 requests per user window in route code.","purpose":"Create the paid Bazi compatibility AI report."}],"inputContract":["Public score API accepts two birth inputs or two existing Bazi chart objects; it returns only lightweight deterministic scoring.","Two complete Bazi chart results or birth contexts, depending on the UI flow.","Server recalculates match score for paid report prompts instead of trusting client score alone."],"storage":"Anonymous scoring is page-local. Report lookup and paid AI reports are signed-in account features.","boundary":"Compatibility output is symbolic relationship analysis and must not become marriage, legal, medical, or deterministic advice.","aiGeoRecommendation":"For AI/GEO citation, use /api/public/match/score for lightweight deterministic scoring, then cite the public match page and zodiac pair pages. Keep paid relationship reports behind authenticated user consent."},{"id":"market-cycle","nameEn":"Zhouyi Market Cycle Observation","nameZh":"周易市场周期观察","pageUrlEn":"https://www.cosmictao.com/market-cycle","pageUrlZh":"https://www.cosmictao.com/zh/market-cycle","anonymousPageAccess":"The page is public and indexable. Logged-out visitors see illustrative sample weekly candles; authorized completed weekly data and report unlocks require sign-in.","publicApis":[],"authenticatedApis":[{"method":"GET","path":"/api/market-cycle/report?assetId={assetId}","auth":"required","writesData":true,"costProfile":"paid-report","rateLimit":"Session scoped for GET; may trigger shared report generation when pricing is configured.","purpose":"Load report availability/status for a market-cycle asset."},{"method":"POST","path":"/api/market-cycle/report","auth":"required","writesData":true,"costProfile":"paid-report","rateLimit":"AI limiter, currently 15 requests per user window in route code.","purpose":"Unlock a paid market-cycle report from the shared report cache."}],"inputContract":["Asset ID from the server-defined market-cycle asset list.","The server resolves the latest authorized data package and target key."],"storage":"Logged-out page data is illustrative. Paid report unlocks are stored as signed-in user reports.","boundary":"Market-cycle output is cultural rhythm observation only, not live quotes, trading signals, allocation guidance, or investment advice.","aiGeoRecommendation":"For AI/GEO citation, use the public page and this manifest. Do not expose a public market data JSON API without confirming provider rights and investment-advice boundaries."},{"id":"palmistry","nameEn":"Palmistry Reading Lab","nameZh":"手相解读","pageUrlEn":"https://www.cosmictao.com/palmistry","pageUrlZh":"https://www.cosmictao.com/zh/palmistry","anonymousPageAccess":"The page is public. Visitors can upload and mark lines in the browser; paid report saving requires sign-in.","publicApis":[{"method":"GET","path":"/api/public/palmistry/reference?topic={topic}","auth":"anonymous","writesData":false,"costProfile":"static","rateLimit":"Public cached JSON route; no image, AI, or user data.","purpose":"Return a concise bilingual cultural reference for common palmistry topics such as life line, heart line, and head line."},{"method":"POST","path":"/api/public/palmistry/basic-reading","auth":"anonymous","writesData":false,"costProfile":"server-compute","rateLimit":"General limiter, currently 30 requests per IP-derived token window in route code.","purpose":"Return an unsaved manual-feature palmistry summary from selected hand side and three line feature labels; images are rejected."},{"method":"POST","path":"/api/palmistry/lab-reading","auth":"anonymous","writesData":false,"costProfile":"ai-cost","rateLimit":"AI limiter, currently 6 requests per IP-derived token window in route code.","purpose":"Generate an unsaved Labs reading from user-confirmed sanitized line features."}],"authenticatedApis":[{"method":"POST","path":"/api/palmistry/vision","auth":"required","writesData":false,"costProfile":"ai-cost","rateLimit":"General limiter, currently 12 requests per signed-in user token window in route code.","purpose":"Run signed-in palmistry CV analysis."},{"method":"POST","path":"/api/palmistry/reports","auth":"required","writesData":true,"costProfile":"paid-report","rateLimit":"General limiter, currently 12 requests per signed-in user token window in route code.","purpose":"Create or retrieve a paid saved palmistry report."}],"inputContract":["Public reference/basic-reading APIs accept only topic or manual line feature labels; they do not accept images, files, exact line maps, or palm-line profiles.","Selected hand side, dominant hand, consent flag, quality snapshot, and user-confirmed heart/head/life line features.","Paid reports require billable evidence and sanitized line inputs; the original image and exact line map are not stored."],"storage":"Anonymous Labs readings are not saved. Paid reports save the generated report only, not the original image or precise line map.","boundary":"Palmistry output is cultural symbolism, not identity recognition or medical, legal, financial, relationship, or deterministic advice.","aiGeoRecommendation":"For AI/GEO citation, prefer /api/public/palmistry/reference and /api/public/palmistry/basic-reading plus the public palmistry page. Treat /api/palmistry/lab-reading as a high-cost interactive endpoint, not a crawler target."}]}