zens-ink 1.4.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
zens_ink-1.4.5/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jask
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,206 @@
1
+ Metadata-Version: 2.4
2
+ Name: zens-ink
3
+ Version: 1.4.5
4
+ Summary: Free SEO toolkit for indie builders — zero dependencies
5
+ Home-page: https://github.com/ZensInk/zens-ink-seo-package
6
+ Author: Jask
7
+ License: MIT
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
12
+ Requires-Python: >=3.10
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Dynamic: author
16
+ Dynamic: classifier
17
+ Dynamic: description
18
+ Dynamic: description-content-type
19
+ Dynamic: home-page
20
+ Dynamic: license
21
+ Dynamic: license-file
22
+ Dynamic: requires-python
23
+ Dynamic: summary
24
+
25
+ <div align="center">
26
+
27
+ <img src="assets/logo.svg" alt="ZensInk" width="80">
28
+
29
+ # ZensInk
30
+
31
+ <img src="assets/hero-banner.png" alt="ZensInk — SEO Toolkit for Indie Builders" width="100%">
32
+
33
+ ### SEO Toolkit for Indie Builders
34
+
35
+ CLI tools for keyword research, competitor analysis, and technical audits. Zero dependencies, pure Python.
36
+
37
+ [English](README.md) · [中文](README.zh.md)
38
+
39
+ [![License: MIT](https://img.shields.io/badge/License-MIT-7c3aed?style=flat-square)](https://opensource.org/licenses/MIT)
40
+ [![Python 3.10+](https://img.shields.io/badge/Python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org)
41
+ [![Zero Dependencies](https://img.shields.io/badge/Dependencies-0-059669?style=flat-square)](https://github.com/ZensInk/zens-ink-seo-package)
42
+ [![Agent Skill](https://img.shields.io/badge/Agent-Skill-7c3aed?style=flat-square)](SKILL.md)
43
+ [![GitHub stars](https://img.shields.io/github/stars/ZensInk/zens-ink-seo-package?style=flat-square&color=7c3aed)](https://github.com/ZensInk/zens-ink-seo-package)
44
+ [![GitHub last commit](https://img.shields.io/github/last-commit/ZensInk/zens-ink-seo-package?style=flat-square&color=a8a29e)](https://github.com/ZensInk/zens-ink-seo-package)
45
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-7c3aed?style=flat-square)](https://github.com/ZensInk/zens-ink-seo-package/pulls)
46
+
47
+ </div>
48
+
49
+ ---
50
+
51
+ Thirteen CLI tools that cover the full SEO workflow — from discovering what people search, to clustering keywords by topic, to classifying search intent, to auditing your own site. No paid APIs. No Ahrefs. No subscriptions. Just free data sources wired together with Python.
52
+
53
+ | Tool | What it does | API needed |
54
+ |------|-------------|-----------|
55
+ | `keyword_research` | Discover long-tail keywords via Google Autocomplete | None |
56
+ | `keyword_cluster` | Group keywords into semantic topic clusters | None |
57
+ | `kd` | Keyword difficulty score via SERP structure analysis | Free Serper key |
58
+ | `kgr_auto` | KGR opportunity scoring (competition vs volume) | Optional Bing key |
59
+ | `keyword_volume` | Real search volume via Bing Webmaster API | Free Bing key |
60
+ | `brave_volume` | Cross-check search demand via Brave SERP signals | Free Brave key |
61
+ | `domain_rating` | Real Ahrefs Domain Rating (0-100) via the free public API | Free Ahrefs key |
62
+ | `search_intent` | Classify keywords by search intent (info/commercial/transactional) | None |
63
+ | `content_matrix` | Prioritized content opportunity matrix | None |
64
+ | `competitor_gap` | Compare multiple competitor sitemaps, find content gaps | None |
65
+ | `site_audit` | Technical SEO + GEO audit: 30 checks covering links, meta, images, structured data, AI visibility | None |
66
+ | `onpage_audit` | On-page quality scoring (7 dimensions, 0-100 per page) | None |
67
+ | `setup_gsc` | One-time OAuth setup for Google Search Console | — |
68
+ | `search_performance` | Your site's real Google ranking data (GSC) | Free GSC OAuth |
69
+
70
+ ## Why
71
+
72
+ Ahrefs costs $200/month. SEMrush costs $130/month. For indie builders who just need to find keywords worth writing about, that's overkill.
73
+
74
+ zens.ink wires together free public data sources — Google Autocomplete, Bing Webmaster Tools, Google Search Console, Brave Search, Ahrefs Domain Rating — with zero Python dependencies.
75
+
76
+ ## Install
77
+
78
+ **Option A — pip (recommended)**
79
+
80
+ ```bash
81
+ pip install git+https://github.com/ZensInk/zens-ink-seo-package.git
82
+ ```
83
+
84
+ After install, the `zens-ink` command is available globally:
85
+
86
+ ```bash
87
+ zens-ink --help
88
+ ```
89
+
90
+ **Option B — git clone**
91
+
92
+ ```bash
93
+ git clone https://github.com/ZensInk/zens-ink-seo-package.git
94
+ cd zens-ink-seo-package
95
+ ```
96
+
97
+ ## Quick Start
98
+
99
+ ```bash
100
+ # Discover keywords (with a-z long-tail expansion)
101
+ zens-ink keyword_research "tarot" --expand
102
+
103
+ # Check real search volume
104
+ zens-ink keyword_volume "tarot reading" --country us
105
+
106
+ # Keyword difficulty (SERP-based, with Chinese mode)
107
+ zens-ink kd "塔罗牌" --zh
108
+
109
+ # Compare 3 competitors at once
110
+ zens-ink competitor_gap \
111
+ --url https://yoursite.com/sitemap.xml \
112
+ --compare https://competitor-a.com/sitemap.xml https://competitor-b.com/sitemap.xml
113
+
114
+ # Audit your build for SEO issues
115
+ zens-ink site_audit --dist dist --sitemap dist/sitemap.xml
116
+
117
+ # Check your own Google search performance
118
+ zens-ink search_performance
119
+ ```
120
+
121
+ <details>
122
+ <summary>Not installed? Use <code>python3 -m</code> instead</summary>
123
+
124
+ ```bash
125
+ python3 -m zens_ink.keyword_research "tarot" --expand
126
+ python3 -m zens_ink.kd "tarot reading"
127
+ python3 -m zens_ink.site_audit --dist dist --sitemap dist/sitemap.xml
128
+ ```
129
+
130
+ </details>
131
+
132
+ ## Use as Agent Skill
133
+
134
+ ZensInk works as an AI agent skill — let your AI assistant run SEO tools for you in plain language.
135
+
136
+ ```bash
137
+ # Install for ClawHub / OpenClaw / Hermes compatible agents
138
+ npx skills add ZensInk/zens-ink-seo-package --skill zens-ink
139
+ ```
140
+
141
+ Then just tell your AI: "find keywords for my tarot site" and it runs the tools for you. See [SKILL.md](SKILL.md) for details.
142
+
143
+ ## Use as MCP Server (DSH / Claude / Codex)
144
+
145
+ ZensInk ships a built-in MCP stdio server — every tool becomes a native model tool (`mcp__zensink__keyword_research`, `mcp__zensink__kd`, ...). Pure stdlib, zero extra dependencies.
146
+
147
+ ```bash
148
+ python3 -m zens_ink.mcp # MCP stdio server on stdin/stdout
149
+ ```
150
+
151
+ Add to [DeepSeek Harness (DSH)](https://github.com/deepseek-ai/deepseek-harness) — `~/.dsh/profiles/web/cordis.patch.yml`:
152
+
153
+ ```yaml
154
+ - insert:
155
+ - id: mcp-zensink
156
+ name: '@deepseek-ai/dsh-mcp-client'
157
+ config:
158
+ serverName: zensink
159
+ transport: stdio
160
+ command: python3
161
+ args: ['-m', 'zens_ink.mcp']
162
+ toolCallTimeoutMs: 300000
163
+ ```
164
+
165
+ For other MCP clients (Claude Desktop, Codex, ...), point the stdio command at `python3 -m zens_ink.mcp`. API keys are read from the package root `.env` as usual.
166
+
167
+ If the [Pro package](https://zens.ink) (`zens_ink_pro`) is installed alongside, its tools (winability, content_radar, competitor_radar, geo_score, geo_visibility, gap_deep, full_audit) are picked up automatically — the same server exposes everything available on that machine. OSS-only installs stay OSS-only.
168
+
169
+ ## Typical Workflow
170
+
171
+ ```
172
+ keyword_research → find what people actually search
173
+ ↓
174
+ keyword_volume → filter by real demand
175
+ ↓
176
+ kd → pick keywords you can actually rank for
177
+ ↓
178
+ competitor_gap → see what competitors already cover
179
+ ↓
180
+ site_audit → make sure your pages are crawlable
181
+ ```
182
+
183
+ ## Requirements
184
+
185
+ - Python 3.10+
186
+ - Zero dependencies — pure standard library
187
+ - Optional API keys (Bing, Serper, Brave, GSC) in `.env` — see `.env.example`
188
+
189
+ ## Documentation
190
+
191
+ - **Changelog**: [CHANGELOG.md](CHANGELOG.md)
192
+
193
+ - **Full docs & case studies**: [zens.ink/docs](https://zens.ink/docs)
194
+ - **Pro package** (automated full-audit pipeline, HTML reports, GEO score): [zens.ink](https://zens.ink)
195
+
196
+ ## License
197
+
198
+ MIT — free for personal and commercial use.
199
+
200
+ ---
201
+
202
+ <div align="center">
203
+
204
+ Made by [Jask](https://github.com/respectevery01)
205
+
206
+ </div>
@@ -0,0 +1,182 @@
1
+ <div align="center">
2
+
3
+ <img src="assets/logo.svg" alt="ZensInk" width="80">
4
+
5
+ # ZensInk
6
+
7
+ <img src="assets/hero-banner.png" alt="ZensInk — SEO Toolkit for Indie Builders" width="100%">
8
+
9
+ ### SEO Toolkit for Indie Builders
10
+
11
+ CLI tools for keyword research, competitor analysis, and technical audits. Zero dependencies, pure Python.
12
+
13
+ [English](README.md) · [中文](README.zh.md)
14
+
15
+ [![License: MIT](https://img.shields.io/badge/License-MIT-7c3aed?style=flat-square)](https://opensource.org/licenses/MIT)
16
+ [![Python 3.10+](https://img.shields.io/badge/Python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org)
17
+ [![Zero Dependencies](https://img.shields.io/badge/Dependencies-0-059669?style=flat-square)](https://github.com/ZensInk/zens-ink-seo-package)
18
+ [![Agent Skill](https://img.shields.io/badge/Agent-Skill-7c3aed?style=flat-square)](SKILL.md)
19
+ [![GitHub stars](https://img.shields.io/github/stars/ZensInk/zens-ink-seo-package?style=flat-square&color=7c3aed)](https://github.com/ZensInk/zens-ink-seo-package)
20
+ [![GitHub last commit](https://img.shields.io/github/last-commit/ZensInk/zens-ink-seo-package?style=flat-square&color=a8a29e)](https://github.com/ZensInk/zens-ink-seo-package)
21
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-7c3aed?style=flat-square)](https://github.com/ZensInk/zens-ink-seo-package/pulls)
22
+
23
+ </div>
24
+
25
+ ---
26
+
27
+ Thirteen CLI tools that cover the full SEO workflow — from discovering what people search, to clustering keywords by topic, to classifying search intent, to auditing your own site. No paid APIs. No Ahrefs. No subscriptions. Just free data sources wired together with Python.
28
+
29
+ | Tool | What it does | API needed |
30
+ |------|-------------|-----------|
31
+ | `keyword_research` | Discover long-tail keywords via Google Autocomplete | None |
32
+ | `keyword_cluster` | Group keywords into semantic topic clusters | None |
33
+ | `kd` | Keyword difficulty score via SERP structure analysis | Free Serper key |
34
+ | `kgr_auto` | KGR opportunity scoring (competition vs volume) | Optional Bing key |
35
+ | `keyword_volume` | Real search volume via Bing Webmaster API | Free Bing key |
36
+ | `brave_volume` | Cross-check search demand via Brave SERP signals | Free Brave key |
37
+ | `domain_rating` | Real Ahrefs Domain Rating (0-100) via the free public API | Free Ahrefs key |
38
+ | `search_intent` | Classify keywords by search intent (info/commercial/transactional) | None |
39
+ | `content_matrix` | Prioritized content opportunity matrix | None |
40
+ | `competitor_gap` | Compare multiple competitor sitemaps, find content gaps | None |
41
+ | `site_audit` | Technical SEO + GEO audit: 30 checks covering links, meta, images, structured data, AI visibility | None |
42
+ | `onpage_audit` | On-page quality scoring (7 dimensions, 0-100 per page) | None |
43
+ | `setup_gsc` | One-time OAuth setup for Google Search Console | — |
44
+ | `search_performance` | Your site's real Google ranking data (GSC) | Free GSC OAuth |
45
+
46
+ ## Why
47
+
48
+ Ahrefs costs $200/month. SEMrush costs $130/month. For indie builders who just need to find keywords worth writing about, that's overkill.
49
+
50
+ zens.ink wires together free public data sources — Google Autocomplete, Bing Webmaster Tools, Google Search Console, Brave Search, Ahrefs Domain Rating — with zero Python dependencies.
51
+
52
+ ## Install
53
+
54
+ **Option A — pip (recommended)**
55
+
56
+ ```bash
57
+ pip install git+https://github.com/ZensInk/zens-ink-seo-package.git
58
+ ```
59
+
60
+ After install, the `zens-ink` command is available globally:
61
+
62
+ ```bash
63
+ zens-ink --help
64
+ ```
65
+
66
+ **Option B — git clone**
67
+
68
+ ```bash
69
+ git clone https://github.com/ZensInk/zens-ink-seo-package.git
70
+ cd zens-ink-seo-package
71
+ ```
72
+
73
+ ## Quick Start
74
+
75
+ ```bash
76
+ # Discover keywords (with a-z long-tail expansion)
77
+ zens-ink keyword_research "tarot" --expand
78
+
79
+ # Check real search volume
80
+ zens-ink keyword_volume "tarot reading" --country us
81
+
82
+ # Keyword difficulty (SERP-based, with Chinese mode)
83
+ zens-ink kd "塔罗牌" --zh
84
+
85
+ # Compare 3 competitors at once
86
+ zens-ink competitor_gap \
87
+ --url https://yoursite.com/sitemap.xml \
88
+ --compare https://competitor-a.com/sitemap.xml https://competitor-b.com/sitemap.xml
89
+
90
+ # Audit your build for SEO issues
91
+ zens-ink site_audit --dist dist --sitemap dist/sitemap.xml
92
+
93
+ # Check your own Google search performance
94
+ zens-ink search_performance
95
+ ```
96
+
97
+ <details>
98
+ <summary>Not installed? Use <code>python3 -m</code> instead</summary>
99
+
100
+ ```bash
101
+ python3 -m zens_ink.keyword_research "tarot" --expand
102
+ python3 -m zens_ink.kd "tarot reading"
103
+ python3 -m zens_ink.site_audit --dist dist --sitemap dist/sitemap.xml
104
+ ```
105
+
106
+ </details>
107
+
108
+ ## Use as Agent Skill
109
+
110
+ ZensInk works as an AI agent skill — let your AI assistant run SEO tools for you in plain language.
111
+
112
+ ```bash
113
+ # Install for ClawHub / OpenClaw / Hermes compatible agents
114
+ npx skills add ZensInk/zens-ink-seo-package --skill zens-ink
115
+ ```
116
+
117
+ Then just tell your AI: "find keywords for my tarot site" and it runs the tools for you. See [SKILL.md](SKILL.md) for details.
118
+
119
+ ## Use as MCP Server (DSH / Claude / Codex)
120
+
121
+ ZensInk ships a built-in MCP stdio server — every tool becomes a native model tool (`mcp__zensink__keyword_research`, `mcp__zensink__kd`, ...). Pure stdlib, zero extra dependencies.
122
+
123
+ ```bash
124
+ python3 -m zens_ink.mcp # MCP stdio server on stdin/stdout
125
+ ```
126
+
127
+ Add to [DeepSeek Harness (DSH)](https://github.com/deepseek-ai/deepseek-harness) — `~/.dsh/profiles/web/cordis.patch.yml`:
128
+
129
+ ```yaml
130
+ - insert:
131
+ - id: mcp-zensink
132
+ name: '@deepseek-ai/dsh-mcp-client'
133
+ config:
134
+ serverName: zensink
135
+ transport: stdio
136
+ command: python3
137
+ args: ['-m', 'zens_ink.mcp']
138
+ toolCallTimeoutMs: 300000
139
+ ```
140
+
141
+ For other MCP clients (Claude Desktop, Codex, ...), point the stdio command at `python3 -m zens_ink.mcp`. API keys are read from the package root `.env` as usual.
142
+
143
+ If the [Pro package](https://zens.ink) (`zens_ink_pro`) is installed alongside, its tools (winability, content_radar, competitor_radar, geo_score, geo_visibility, gap_deep, full_audit) are picked up automatically — the same server exposes everything available on that machine. OSS-only installs stay OSS-only.
144
+
145
+ ## Typical Workflow
146
+
147
+ ```
148
+ keyword_research → find what people actually search
149
+ ↓
150
+ keyword_volume → filter by real demand
151
+ ↓
152
+ kd → pick keywords you can actually rank for
153
+ ↓
154
+ competitor_gap → see what competitors already cover
155
+ ↓
156
+ site_audit → make sure your pages are crawlable
157
+ ```
158
+
159
+ ## Requirements
160
+
161
+ - Python 3.10+
162
+ - Zero dependencies — pure standard library
163
+ - Optional API keys (Bing, Serper, Brave, GSC) in `.env` — see `.env.example`
164
+
165
+ ## Documentation
166
+
167
+ - **Changelog**: [CHANGELOG.md](CHANGELOG.md)
168
+
169
+ - **Full docs & case studies**: [zens.ink/docs](https://zens.ink/docs)
170
+ - **Pro package** (automated full-audit pipeline, HTML reports, GEO score): [zens.ink](https://zens.ink)
171
+
172
+ ## License
173
+
174
+ MIT — free for personal and commercial use.
175
+
176
+ ---
177
+
178
+ <div align="center">
179
+
180
+ Made by [Jask](https://github.com/respectevery01)
181
+
182
+ </div>
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,26 @@
1
+ from setuptools import setup, find_packages
2
+
3
+ setup(
4
+ name="zens-ink",
5
+ version="1.4.5",
6
+ description="Free SEO toolkit for indie builders — zero dependencies",
7
+ long_description=open("README.md").read() if __import__("os").path.exists("README.md") else "",
8
+ long_description_content_type="text/markdown",
9
+ author="Jask",
10
+ url="https://github.com/ZensInk/zens-ink-seo-package",
11
+ license="MIT",
12
+ packages=find_packages(),
13
+ python_requires=">=3.10",
14
+ install_requires=[], # Zero dependencies — pure stdlib
15
+ entry_points={
16
+ "console_scripts": [
17
+ "zens-ink=zens_ink.__main__:main",
18
+ ],
19
+ },
20
+ classifiers=[
21
+ "Programming Language :: Python :: 3",
22
+ "License :: OSI Approved :: MIT License",
23
+ "Operating System :: OS Independent",
24
+ "Topic :: Internet :: WWW/HTTP :: Site Management",
25
+ ],
26
+ )
@@ -0,0 +1,4 @@
1
+ """zens.ink — Free SEO keyword research toolkit."""
2
+ __version__ = "1.4.5"
3
+
4
+ TOOLS_COUNT = 16
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env python3
2
+ """CLI dispatcher for zens.ink SEO toolkit."""
3
+
4
+ import sys
5
+
6
+ TOOLS = {
7
+ # Discovery
8
+ "keyword_research": "Discover keywords via Google Autocomplete",
9
+ "keyword_cluster": "Group raw keywords into semantic topic clusters",
10
+ # Difficulty
11
+ "kd": "Keyword Difficulty score via SERP structure analysis",
12
+ "kgr_auto": "Automated opportunity scoring (KGR: competition vs volume)",
13
+ # Volume
14
+ "keyword_volume": "Check real search volume via Bing API",
15
+ "brave_volume": "Estimate search demand via Brave SERP signals",
16
+ # Off-page authority
17
+ "domain_rating": "Real Ahrefs Domain Rating via free public API",
18
+ # Intent & Strategy
19
+ "search_intent": "Classify keywords by search intent (info/commercial/transactional/navigational)",
20
+ "serp_intent": "SERP-based intent analysis (reverse-engineer Google's actual ranking behavior)",
21
+ "content_matrix": "Generate prioritized content opportunity matrix",
22
+ "geo_fanout": "Query Fan-out content planning (GEO/AI search)",
23
+ "reddit_blueocean": "Reddit blue-ocean keyword mining via Autocomplete",
24
+ # Competitive
25
+ "competitor_gap": "Analyze competitor content via sitemaps",
26
+ # Technical Audit
27
+ "site_audit": "Technical SEO audit (orphan pages, broken links, missing tags)",
28
+ "onpage_audit": "On-page quality scoring (7 dimensions, 0-100 per page)",
29
+ # GSC
30
+ "setup_gsc": "One-time OAuth setup for Search Console",
31
+ "search_performance": "Your site's Google search data (GSC)",
32
+ # Tracking
33
+ "rank_tracker": "SQLite-backed keyword position history",
34
+ # MCP server
35
+ "mcp": "Run as MCP stdio server (DSH / Claude / Codex integration)",
36
+ }
37
+
38
+
39
+ def show_help():
40
+ from zens_ink import __version__
41
+ print(f"\nzens.ink CLI v{__version__} — Free SEO toolkit for indie builders\n")
42
+ print("Usage: zens-ink <tool> [options]")
43
+ print(" or: python3 -m zens_ink.<tool> [options]\n")
44
+ print("Tools:")
45
+ for name, desc in TOOLS.items():
46
+ print(f" {name:25s} {desc}")
47
+ print(f"\n {len(TOOLS)} tools — all pure stdlib, zero pip dependencies")
48
+ print(f"\nDocs: https://github.com/ZensInk/zens-ink-seo-package\n")
49
+
50
+
51
+ def main():
52
+ args = sys.argv[1:]
53
+
54
+ if not args or args[0] in ("-h", "--help", "help"):
55
+ show_help()
56
+ return
57
+
58
+ tool = args[0]
59
+ if tool not in TOOLS:
60
+ print(f"Unknown tool: {tool}\n")
61
+ show_help()
62
+ sys.exit(1)
63
+
64
+ # Import and run the tool's main() with remaining args
65
+ mod = __import__(f"zens_ink.{tool}", fromlist=["main"])
66
+ sys.argv = [tool] + args[1:]
67
+ if tool == "mcp":
68
+ mod.serve() # MCP stdio server loop
69
+ return
70
+ mod.main()
71
+
72
+
73
+ if __name__ == "__main__":
74
+ main()