Use for read-only Chinese investment research / 投研知识库 queries: 行业/板块/概念研究目录, 分析师资料, 研报观点, 市场要闻, 分析师解读, 行情异动归因, 行业观点, market news, analyst viewpoints, sector viewpoints.
投研内容查询
Use this skill when the user asks for structured read-only investment research content from the internal 投研/同舟 content database, even if they do not mention "Same Boat" by name.
Do not use this skill for natural-language routing, FinLLM AI search, strategy manager content, strategy performance, user login, follows, favorites, content saves, backend operations, uploads, ASR/TTS, or raw SQL execution.
User-facing outputs must label Same Boat content as retrieved research/news/viewpoint 证据, keep 来源 and time-window boundaries, and avoid investment-advice or stock-recommendation wording.
Runtime Binding
This skill defines the Same Boat logical source contract; it does not declare a separate user-visible MCP connection.
In WorkBuddy, call Same Boat tools through the single tongzhou-fin-research Connector. Runtime tool names use same_boat__<tool>, for example same_boat__list_market_news.
In Codex and retained legacy clients, the same canonical tool may appear as a bare name or a client-qualified server/tool name. Match the canonical tool suffix and keep the Same Boat source label.
Do not bypass an available tongzhou-fin-research Connector by selecting a similarly named global or deferred research tool.
Routing
Choose the narrowest tool family first:
The table uses canonical tool suffixes for readability. Under the WorkBuddy Connector, prepend same_boat__ when selecting the actual tool.
Use MCP tools only. Never generate or pass raw SQL.
Expose only virtual schema/tool names to users, not physical database tables or fields.
Use stable entity IDs from tool results when making follow-up calls.
If an upstream fin-graph resolver result is already available, prefer source_ids.same_boat_sector_id for Same Boat sector tools and keep source_ids.same_boat_market_code as market/index口径 evidence, not as a replacement sector id.
Preserve canonical_id, source_ids, and coverage_gaps from the resolver result in the internal evidence ledger so Layer 2 can explain the research口径.
Label sector_id_system explicitly when known: a Same Boat sector_id may equal lycode, but it remains the Same Boat sector id for Same Boat calls. Do not pass raw lycode as sector_id unless the resolver returned it as source_ids.same_boat_sector_id.
For sector or analyst follow-up queries, resolve IDs first instead of guessing.
For sector-named news or viewpoints such as "AI 算力有哪些同舟观点", first call search_research_sectors(query=...) or list_research_sectors(...), then pass returned sector_id values into list_market_news, list_market_viewpoints, or list_sector_viewpoints.
list_sector_viewpoints requires a stable sector_id, not a sector name. Do not pass the user's raw sector text as sector_id.
For detail tools, call the list/search tool first and reuse returned IDs: get_market_news(news_id=...), get_market_news_analysis(news_id=..., analyst_id=...), get_market_quote_analysis(quote_id=...), get_market_viewpoint_detail(viewpoint_id=...).
A UI-capable host may render these real viewpoint list/detail results through ui://tongzhou-fin-research/viewpoints/v1. Treat that contextual MCP App as the primary list/detail presentation; add a concise text interpretation, but do not render the same viewpoint result again with a Widget. Widget remains the fallback for hosts without the linked App or for a separate chart the user explicitly requested.
If the user asks "同舟怎么看/分析师怎么看/有没有观点" without naming an analyst, prefer list tools and summarize multiple returned items; only call analyst-specific detail after an analyst_id is present.
If the user asks for important market news, headline impact, or 金融资讯影响力评级, use list_market_news(importance_scores=[4, 5], limit=...) when a high-importance filter is appropriate, then sort or group returned items by importance_score, popularity_score, and publish_time. Treat these as Same Boat returned scores, not as an independently calibrated rating model.
If the user asks for 行业多空风向标、行业分数、看多看空理由 or sector sentiment, first resolve the sector with search_research_sectors(query=...), then call list_sector_viewpoints(sector_id=..., time_range="1w" or "1m", limit=...). Use returned sentiment, sentiment_score, radar, summary, content, analyst, analyst_count, and publish_time as the evidence base.
Mention returned publish_time or the explicit filter window when summarizing time-sensitive content.
If a tool returns an empty result, say the current query found no matching 投研内容. Do not invent content.
Do not treat database, timeout, upstream, or validation errors as empty results. If an error code contains DATABASE_UNAVAILABLE, QUERY_FAILED, QUERY_TIMEOUT, UPSTREAM_UNAVAILABLE, or UPSTREAM_FAILED, state that the Same Boat source is temporarily unavailable or the filter needs correction.
For market prices, full historical行情, macro data, or financial indicators, use the Fin Data source namespace instead of this skill (fin_data__* in the WorkBuddy Connector; fin-data-query in retained direct-server clients).
Same Boat market news, market quotes, and viewpoints are 同舟投研内容 sources. Do not use them as substitutes for exchange market data, public announcements, or structured broker report retrieval.