Skip to content

Commit 13e0959

Browse files
author
ZCode Marketplace Bot
committed
feat(tianyancha): 更新 tianyancha mcp 配置
Source-Commit: 3f1f0bc1587bf0058a2159d3a4538dd0b68bb66a
1 parent 0b54c0b commit 13e0959

18 files changed

Lines changed: 202 additions & 130 deletions

File tree

‎marketplace.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@
194194
"en": "Fixed-income and credit research: bond profiles with valuation and duration/convexity/spread, issuer credit assessment, yield-curve and credit-spread analysis, and credit-risk watchlists for onshore bonds",
195195
"zh-CN": "【二级市场】固收研究:债券档案与估值、发行主体信用、收益率曲线与信用利差、信用风险跟踪"
196196
},
197-
"version": "0.1.1",
197+
"version": "0.1.2",
198198
"author": {
199199
"name": "Z.ai",
200200
"url": "https://z.ai"
@@ -223,7 +223,7 @@
223223
"en": "Corporate-banking client acquisition: prospect screening by region, industry chain, park and cluster, business-opportunity scanning, and full client portraits combining registry, relationships, opportunity signals and risk",
224224
"zh-CN": "【一级市场与银行】对公营销:按区域/产业链/园区筛选目标客户、园区与集群扫描、商机线索、客户全景画像"
225225
},
226-
"version": "0.1.1",
226+
"version": "0.1.2",
227227
"author": {
228228
"name": "Z.ai",
229229
"url": "https://z.ai"
@@ -368,7 +368,7 @@
368368
"en": "Counterparty and company due diligence: structured DD reports, related-party and supply-chain mapping, and risk scans (litigation, dishonesty records, pledges, penalties) for Chinese enterprises",
369369
"zh-CN": "【一级市场与银行】企业排查:尽调报告、关联方与供应链图谱、失信涉诉质押风险快扫"
370370
},
371-
"version": "0.1.1",
371+
"version": "0.1.2",
372372
"author": {
373373
"name": "Z.ai",
374374
"url": "https://z.ai"

‎plugins/assess-credit/.claude-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "assess-credit",
33
"displayName": "固收研究",
4-
"version": "0.1.1",
4+
"version": "0.1.2",
55
"description": "Fixed-income and credit research: bond profiles with valuation and duration/convexity/spread, issuer credit assessment, yield-curve and credit-spread analysis, and credit-risk watchlists for onshore bonds",
66
"author": {
77
"name": "Z.ai"

‎plugins/assess-credit/.zcode-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"en": "Fixed Income & Credit",
66
"zh-CN": "固收研究"
77
},
8-
"version": "0.1.1",
8+
"version": "0.1.2",
99
"description": "Fixed-income and credit research: bond profiles with valuation and duration/convexity/spread, issuer credit assessment, yield-curve and credit-spread analysis, and credit-risk watchlists for onshore bonds",
1010
"description_i18n": {
1111
"en": "Fixed-income and credit research: bond profiles with valuation and duration/convexity/spread, issuer credit assessment, yield-curve and credit-spread analysis, and credit-risk watchlists for onshore bonds",

‎plugins/assess-credit/agents/assess-credit.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ If the instrument is ambiguous (an issuer with many outstanding bonds, a 简称
3030
| 可转债转股条款(转股价格 / 转换比例 / 正股代码 / 剩余规模) | `hexin-bond.bond_special_data` | 仅可转债 |
3131
| 基准曲线(国债 / 国开 / 中短期票据 / 城投债)、政策利率 | `wind-economic.query_economic_indicator_data` | 见下方两步取数 |
3232
| 区域财力(城投主体的真实兜底) | `wind-economic.query_economic_indicator_data` | 省 / 市 / 区县三级 |
33-
| 担保圈、股权链、关联方与资金往来 | 天眼查 `search_companies` → `get_company_capabilities` → `call_tool` | `get_guarantee_info` / `get_shareholder_info` / `get_actual_controller` / `get_relation_graph` 等,`tool_name` 逐字复制 |
33+
| 担保圈、股权链、关联方与资金往来 | 天眼查 —— `tools/list` 即权威清单,直接调 | `tianyancha.get_guarantee_info` / `tianyancha.get_shareholder_info` / `tianyancha.get_actual_controller` / `tianyancha.get_relation_graph`;主体传 `company`(全称)。返回体的 `_coverage.status` 三态(`有记录` / `检索范围内未发现` / `源不可用`)由服务判定,不要自己从空列表推断 |
3434
| 评级 / 兑付 / 违约公告 | `wind-docs.get_company_announcements` | 公告正文文本,归 `[披露]` |
3535
| 负面舆情 | `wind-docs.get_financial_news` | 带标题/日期/URL,归 `[媒体]` |
3636

‎plugins/assess-credit/skills/issuer-credit/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ This step is where onshore credit actually breaks, and skipping it produces an a
7272
1. **股权链** — 股东, 对外投资, 兄弟公司. Build the immediate ring around the issuer: who controls it, what it controls, and which siblings share the controller.
7373
2. **担保圈** — walk the ring for guarantee relationships and mutual guarantees. Report each counterparty, the direction (issuer as guarantor vs guaranteed), the amount and its date where exposed. 担保/净资产 is `[测算]` with the 净资产 报告期 named. Mutual or circular guarantees are called out by name — a chain of three mutually-guaranteeing platforms transmits one default to all three.
7474

75-
**`get_guarantee_info` returns the historical record, not the live book.** Every row carries `guaranteeEndDate` and `fulfilled`; read both before the amount enters any ratio. Observed on a distressed issuer: every row carried a 到期日 several years in the past with `fulfilled=否`, i.e. already expired at retrieval — summing them produces a 担保/净资产 that overstates live exposure by whatever has already run off. Total only what is still live, say how many rows you excluded as expired, and where 担保方 equals 被担保方 exclude the row from 对外担保 entirely: that is the issuer guaranteeing its own paper, not exposure to a third party.
75+
**`tianyancha.get_guarantee_info` returns the historical record, not the live book.** Every row carries `grnt_sd` / `grnt_ed`(起止日) and `is_fulfillment`(是否履行完毕); read both before the amount enters any ratio. Observed on a distressed issuer: rows carried a 到期日 several years in the past with `is_fulfillment=否`, i.e. already expired at retrieval — summing them produces a 担保/净资产 that overstates live exposure by whatever has already run off. Total only what is still live, say how many rows you excluded as expired, and where 担保方 equals 被担保方 exclude the row from 对外担保 entirely: that is the issuer guaranteeing its own paper, not exposure to a third party.
7676
3. **资金链 / 关联占款** — funding-transaction links between the issuer and related parties. Large 其他应收款 toward the controller or siblings is the classic form; where the statement items in Step 3 expose it, tie the two together. Where they do not, say the exposure could not be quantified rather than implying it is zero.
7777
4. **关联方负面** — `wind-docs.get_financial_news` on the controller and the material guarantors, not only on the issuer. A clean issuer with a distressed guarantor is not clean, and the report states that in the summary rather than leaving the reader to join two sections.
7878

‎plugins/find-clients/.claude-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "find-clients",
33
"displayName": "对公获客",
4-
"version": "0.1.1",
4+
"version": "0.1.2",
55
"description": "Corporate-banking client acquisition: prospect screening by region, industry chain, park and cluster, business-opportunity scanning, and full client portraits combining registry, relationships, opportunity signals and risk",
66
"author": {
77
"name": "Z.ai"

‎plugins/find-clients/.zcode-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"en": "Corporate Client Acquisition",
66
"zh-CN": "对公获客"
77
},
8-
"version": "0.1.1",
8+
"version": "0.1.2",
99
"description": "Corporate-banking client acquisition: prospect screening by region, industry chain, park and cluster, business-opportunity scanning, and full client portraits combining registry, relationships, opportunity signals and risk",
1010
"description_i18n": {
1111
"en": "Corporate-banking client acquisition: prospect screening by region, industry chain, park and cluster, business-opportunity scanning, and full client portraits combining registry, relationships, opportunity signals and risk",

‎plugins/find-clients/agents/find-clients.md‎

Lines changed: 54 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,66 @@ If the entity or the territory is ambiguous (similarly named companies, several
2020

2121
## Data Source Priority
2222

23-
**天眼查 is a gateway, not a flat tool list, and it has two layers that answer
24-
different questions. Route by layer first.** `tools/list` exposes only the entry
25-
points; the per-company tools live behind a capability list you fetch per subject.
23+
**天眼查 (`tianyancha`) 的 `tools/list` 就是权威工具清单**,一个维度一个工具,
24+
直接调需要的那个。它有两类工具答的是不同的问题,先按类别路由。
2625

27-
**Layer 1 — the screening engine.** This is what builds a universe. It filters on
28-
**行业 + 地区 + 标签, and nothing else** (verified 2026-08-17 against the tool
29-
schemas), so any other condition is enforced after retrieval and labelled as such.
26+
**Layer 1 — 筛选引擎(建名单)。**
3027

3128
| 要按什么筛 | 工具 | 参数 |
3229
|---|---|---|
33-
| 行业 + 地区(含**非上市**,这是获客名单的主体) | `search_companies_by_industry_region` | `industry`(国标行业代码) / `region`(areaCode) / 分页 |
34-
| 资质标签(高新 / 专精特新 / 单项冠军…) | `search_companies_by_tag` | `tag` + `industry`/`region` 至少一个 |
35-
| 上榜榜单 | `search_companies_by_ranking` | `query` + 分页 |
36-
| 上市主体 | `search_listed_companies` | `query` + 分页 |
37-
| 主体定位(拿 `company_id`) | `search_companies` | `query` —— 后续两层都要这个 id |
38-
39-
**Layer 2 — per-company enrichment.** `search_companies` → `get_company_capabilities`
40-
(pass that `company_id`) → `call_tool`, copying `tool_name` **verbatim** from the
41-
list. The roster is generated per subject and varies; a sample on one large listed
42-
entity returned 87 tools (2026-08-17). Anything in this layer is 抽样富集, not
43-
引擎切分 —— say which in the output.
30+
| 资质标签(高新 / 专精特新 / 单项冠军…) —— **规模化名单的主路径** | `tianyancha.search_companies_by_tag` | `tag`(必须是官方 76 个标签之一) + `industry` / `region` **至少一个** |
31+
| 关键词 + 行业 / 地区收窄 | `tianyancha.search_companies_by_industry_region` | `query`(**必填**) + `industry` / `region` |
32+
| **园区在驻企业** | `tianyancha.search_parks` | `park_name` —— **园区全名**,精确匹配 |
33+
| 榜单成员企业(反查) | `tianyancha.search_companies_by_ranking` | `ranking`(榜单名) |
34+
| 某公司上过哪些榜 | `tianyancha.search_companies_by_ranking` | `company` |
35+
| 上市主体 | `tianyancha.search_listed_companies` | `query` |
36+
| 中文行业 / 地区 / 标签名 → 官方码 | `tianyancha.resolve_codes` | `industry` / `region` / `tag` |
37+
| 主体定位(拿准确全称) | `tianyancha.search_companies` | `query` |
38+
39+
**两条口径必须写进输出,否则名单边界会被误读:**
40+
41+
- **`search_companies_by_industry_region` 不是「行业×地区全量切分」。** `query` 是上游
42+
必填参数,行业与地区是在**关键词命中集**上做交集 —— 实测 `query=电池` + 行业 电池制造
43+
+ 浦东新区 返回 62 家,但 `query=科技` + 海淀区(不带行业)返回「经查无结果」。
44+
所以它给不出「某区某行业全部企业」的完整名单;那种名单走
45+
`search_companies_by_tag`。输出里说明边界是关键词命中集。
46+
- **`total=5000` 是上游封顶值,不是真实命中数。** 出现时收窄行业或地区才能拿到真实规模。
47+
48+
中文名会自动解析成官方码(34 省 / 343 市 / 3032 区县;20 门类 / 97 大类 / 473 中类;
49+
76 个标签)。**歧义时工具报错并给候选,不会猜** —— 「朝阳区」在北京和长春都有,
50+
遇到就挑一个具体的再调。标签名写错同样直接报错,不会静默返回空。
51+
52+
**园区可以切分**:`tianyancha.search_parks(park_name=…)` 返回该园区的在驻企业。
53+
但它是**精确名查询不是模糊搜索** —— 「盈创动力科技园」返回 500 家,
54+
「张江」返回「经查无结果」。拿精确园区名的路径是
55+
`tianyancha.get_company_parks(某公司)` 或 `get_company_basic_profile` 的「所在园区」段。
56+
所以「某园区里有哪些企业」的正确两步是:先从一家已知在园企业读出精确园区名,
57+
再用那个名字展开。
58+
59+
**Layer 2 — 逐公司富集。** 直接调,不需要先拉清单。这一层是**抽样富集**而不是
60+
引擎切分 —— 输出里说明是哪一种。
4461

4562
| 要取什么 | 工具 | 返回 |
4663
|---|---|---|
47-
| 画像(登记、标签、规模、曾用名、地址、**所在园区**、联系渠道存在性) | `get_company_basic_profile` | 静态入口,无需能力清单 |
48-
| 决策链(姓名 + 职务) | `get_company_people` | 汇总 主要人员 / 上市公司董监高 / 核心团队 |
49-
| 供应链上下游 | `get_suppliers_and_customers` | 供应商/客户名称、采购/销售金额、占比、公告日期 |
50-
| 集团与关联图谱 | `get_company_group_profile` / `get_relation_graph` | 一跳关系图 |
51-
| 发债 | `get_bonds` | 发行日期 / 债券名称 / 代码 / 类型 |
52-
| 分项评分 | `get_ipr_score` | 研发能力 / 创新能力 / 成长能力 / 行业潜力 各自得分(**不是 A–E / S–E 等级**) |
53-
| 税务与信用评级 | `get_credit_evaluation` | 税务评级 + 企业信用评级 |
54-
| 风险总览 / 明细 | `get_risk_overview` / `get_risk_detail` | 自身 / 周边 / 预警 三档 |
55-
| 招投标与资产处置 | `search_bids` | `bid_type="4"` 取中标结果;`publish_start_time`/`publish_end_time` |
56-
57-
`search_bids` **两个方向都要读**:一个名字作**采购人**暴露它在招的资本开支(融资需求,
58-
且其中标方是新线索),作**中标方**暴露订单簿。观察到的 采购人↔中标方 配对,是产业链
59-
批量获客的经验路径 —— 比行业分类字段更实。它是记录而非媒体,所以是 `[披露]`,这对
60-
**非上市**主体尤其要紧,那里没有公告可依。
64+
| 画像(登记、规模、曾用名、地址、**所在园区**、联系渠道存在性) | `tianyancha.get_company_basic_profile` | 一次聚合 5 个来源 |
65+
| 决策链(姓名 + 职务) | `tianyancha.get_company_people` | 主要人员 / 历史主要人员 / 上市董监高 / 核心团队 |
66+
| 供应链上下游 | `tianyancha.get_suppliers_and_customers` | 供应商/客户名称、采购/销售金额、占比、公告日期。**来源是公告,非上市主体通常为空** —— 那时改从 `search_bids` 的 采购人↔中标方 配对取 |
67+
| 集团与关联图谱 | `tianyancha.get_company_group_profile` / `tianyancha.get_relation_graph` | 集团成员/对外投资/投资方;一跳关系图 |
68+
| 发债 | `tianyancha.get_bonds` | 发行日期 / 债券名称 / 代码 / 类型 |
69+
| 分项评分 | `tianyancha.get_ipr_score` | 研发能力 / 创新能力 / 成长能力 / 行业潜力 各自得分(**不是 A–E / S–E 等级**) |
70+
| 税务与信用评级 | `tianyancha.get_credit_evaluation` | 税务评级 + 企业信用评级 + 一般纳税人 + 进出口信用 |
71+
| 风险总览 / 明细 | `tianyancha.get_risk_overview` / `tianyancha.get_risk_detail` | 自身 / 周边 / 历史 / 预警 四档,带每档条数 |
72+
| 招投标与资产处置 | `tianyancha.search_bids`(跨公司) / `tianyancha.get_bidding_info`(本主体) | `role="2"` 采购人、`"3"` 供应商;`bid_type="4"` 取中标结果;`start`/`end` 限日期窗口 |
73+
74+
`search_bids` **两个方向都要读**:一个名字作**采购人**(`role="2"`)暴露它在招的资本开支
75+
(融资需求,且其中标方是新线索),作**供应商**(`role="3"`)暴露订单簿。观察到的
76+
采购人↔中标方 配对,是产业链批量获客的经验路径 —— 比行业分类字段更实。它是记录而非
77+
媒体,所以是 `[披露]`,这对**非上市**主体尤其要紧,那里没有公告可依。
78+
79+
**每个返回体带 `_coverage.status`,取值只有 `有记录` / `检索范围内未发现` / `源不可用`
80+
三个,由服务判定。** 不要自己从空列表推断 —— 参数写错会直接报错而不是返回空,所以空
81+
就真的是「没有记录」。返回体还带 `total` 与 `fetched`,`total > fetched` 时 `_notes`
82+
写明还有多少条未取(上游 `size` 上限 20):**一页不是完整名单**,要么翻页要么写明截断。
6183

6284
| 其他源 | 用途 |
6385
|---|---|
@@ -287,7 +309,7 @@ question from memory, and never assume today's date.
287309
- **This plugin issues no verdict on a company.** It does not state or imply that a company is creditworthy, approved, safe, clean, or bankable. `client-portrait` ends with a hand-off and a list of questions to ask, not a conclusion.
288310
- **A prospect list is a snapshot.** Every list, map and scan carries `检索于` and says so in words. A list handed to an RM two weeks later is a different list.
289311
- **Report the criteria the engine actually executed.** A screen that silently drops a filter produces a target list the RM will waste weeks on. Echo back what the engine ran, and list every requested condition it could not enforce — one line per condition, never merged into a summary.
290-
- **Address basis is load-bearing.** `addrType` 1 (注册地址) and 2 (经营地址) give different enterprise populations for the same park, and the difference is not small. Every territory result names which basis it used.
312+
- **Address basis is load-bearing, and there is only one.** 天眼查 carries the **registered** address on the record and offers no operating-address alternative, so every territory count is a registered-address count. Say so, and state the bias it carries: registered-address counts inflate with shell and holding registrations, and firms operating on site but registered elsewhere are missed. Do not imply a second basis exists.
291313
- **Severity is anchored to banker action, not to alarm**: 🔴 高 means act on it now, 🟡 中 means track it, ⚪ 低·信息 means awareness. Grade the signal, never the company — a 🔴 signal is a reason to call, not a rating.
292314
- **A signal is `[披露]` only when it traces to a filing or an official notice.** A news-only signal is `[媒体]` and stays `[媒体]`; being repeated by more outlets does not promote it.
293315
- Target lists and enterprise rosters are natural `.xlsx` deliverables — route them through `xlsx-author`. Long-form portraits and territory studies go to PDF via `report-render`. Short-form stays Markdown in-session. Word only on request or where the reader edits the file — `report-render` builds that too, with the same calls. 用户要 Word 时同样走 `report-render`(`DocxReport`,与 `Report` 同一套调用)——**要出 Word 就先载入 `report-render` 技能,再动手建**;手搓 python-docx / docx-js 会丢掉标签配色、`[n]` 跳转与封面页。

0 commit comments

Comments
 (0)