clink-cli 0.2.1__tar.gz → 0.2.2__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.
Files changed (148) hide show
  1. {clink_cli-0.2.1/clink_cli.egg-info → clink_cli-0.2.2}/PKG-INFO +38 -27
  2. {clink_cli-0.2.1 → clink_cli-0.2.2}/README.md +36 -25
  3. {clink_cli-0.2.1 → clink_cli-0.2.2/clink_cli.egg-info}/PKG-INFO +38 -27
  4. {clink_cli-0.2.1 → clink_cli-0.2.2}/config.py +1 -1
  5. {clink_cli-0.2.1 → clink_cli-0.2.2}/pyproject.toml +2 -2
  6. {clink_cli-0.2.1 → clink_cli-0.2.2}/LICENSE +0 -0
  7. {clink_cli-0.2.1 → clink_cli-0.2.2}/MANIFEST.in +0 -0
  8. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/__init__.py +0 -0
  9. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/agents/__init__.py +0 -0
  10. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/agents/base.py +0 -0
  11. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/agents/claude.py +0 -0
  12. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/agents/codex.py +0 -0
  13. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/agents/gemini.py +0 -0
  14. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/allowed_roots.py +0 -0
  15. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/backend.py +0 -0
  16. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/cli.py +0 -0
  17. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/constants.py +0 -0
  18. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/contracts.py +0 -0
  19. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/files.py +0 -0
  20. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/generation.py +0 -0
  21. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/generation_capabilities.py +0 -0
  22. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/generation_contracts.py +0 -0
  23. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/generation_policy.py +0 -0
  24. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/models.py +0 -0
  25. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native.py +0 -0
  26. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_adapters.py +0 -0
  27. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_contracts.py +0 -0
  28. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_generation.py +0 -0
  29. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_generation_claude_policy.py +0 -0
  30. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_generation_contracts.py +0 -0
  31. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_generation_families.py +0 -0
  32. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_generation_family_policy.py +0 -0
  33. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_generation_files.py +0 -0
  34. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_generation_policy.py +0 -0
  35. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/native_policy.py +0 -0
  36. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/__init__.py +0 -0
  37. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/agy.py +0 -0
  38. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/agy_native.py +0 -0
  39. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/agy_native_generation.py +0 -0
  40. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/base.py +0 -0
  41. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/claude.py +0 -0
  42. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/claude_native.py +0 -0
  43. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/claude_native_generation.py +0 -0
  44. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/codex.py +0 -0
  45. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/codex_generation.py +0 -0
  46. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/codex_native.py +0 -0
  47. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/codex_native_generation.py +0 -0
  48. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/gemini.py +0 -0
  49. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/grok.py +0 -0
  50. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/grok_native.py +0 -0
  51. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/parsers/grok_native_generation.py +0 -0
  52. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/policy.py +0 -0
  53. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/registry.py +0 -0
  54. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/CODEX-LICENSE +0 -0
  55. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/CODEX-NOTICE +0 -0
  56. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/PROVENANCE.md +0 -0
  57. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/codex-0.166.0-models-direct.json +0 -0
  58. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/codex-0.166.0-models-generation.json +0 -0
  59. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/native-agy-1.4.12-admission.json +0 -0
  60. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/native-claude-2.1.304-admission.json +0 -0
  61. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/native-generation-claude-2.1.304-admission.json +0 -0
  62. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/native-generation-codex-0.166.0-admission.json +0 -0
  63. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/native-generation-grok-1.0.70-admission.json +0 -0
  64. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/resources/native-grok-1.0.70-admission.json +0 -0
  65. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/runner.py +0 -0
  66. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/setup.py +0 -0
  67. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink/tasks.py +0 -0
  68. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink_cli.egg-info/SOURCES.txt +0 -0
  69. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink_cli.egg-info/dependency_links.txt +0 -0
  70. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink_cli.egg-info/entry_points.txt +0 -0
  71. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink_cli.egg-info/requires.txt +0 -0
  72. {clink_cli-0.2.1 → clink_cli-0.2.2}/clink_cli.egg-info/top_level.txt +0 -0
  73. {clink_cli-0.2.1 → clink_cli-0.2.2}/conf/__init__.py +0 -0
  74. {clink_cli-0.2.1 → clink_cli-0.2.2}/conf/cli_clients/agy.json +0 -0
  75. {clink_cli-0.2.1 → clink_cli-0.2.2}/conf/cli_clients/claude.json +0 -0
  76. {clink_cli-0.2.1 → clink_cli-0.2.2}/conf/cli_clients/codex.json +0 -0
  77. {clink_cli-0.2.1 → clink_cli-0.2.2}/conf/cli_clients/gemini.json +0 -0
  78. {clink_cli-0.2.1 → clink_cli-0.2.2}/conf/cli_clients/grok.json +0 -0
  79. {clink_cli-0.2.1 → clink_cli-0.2.2}/integrations/claude/.claude-plugin/plugin.json +0 -0
  80. {clink_cli-0.2.1 → clink_cli-0.2.2}/integrations/claude/skills/setup/SKILL.md +0 -0
  81. {clink_cli-0.2.1 → clink_cli-0.2.2}/requirements.txt +0 -0
  82. {clink_cli-0.2.1 → clink_cli-0.2.2}/server.py +0 -0
  83. {clink_cli-0.2.1 → clink_cli-0.2.2}/setup.cfg +0 -0
  84. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/__init__.py +0 -0
  85. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/analyze_prompt.py +0 -0
  86. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/chat_prompt.py +0 -0
  87. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/clink/codex_codereviewer.txt +0 -0
  88. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/clink/default.txt +0 -0
  89. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/clink/default_codereviewer.txt +0 -0
  90. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/clink/default_planner.txt +0 -0
  91. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/clink/native_codereviewer.txt +0 -0
  92. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/clink/native_default.txt +0 -0
  93. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/clink/native_planner.txt +0 -0
  94. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/codereview_prompt.py +0 -0
  95. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/consensus_prompt.py +0 -0
  96. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/debug_prompt.py +0 -0
  97. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/docgen_prompt.py +0 -0
  98. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/generate_code_prompt.py +0 -0
  99. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/planner_prompt.py +0 -0
  100. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/precommit_prompt.py +0 -0
  101. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/refactor_prompt.py +0 -0
  102. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/secaudit_prompt.py +0 -0
  103. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/testgen_prompt.py +0 -0
  104. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/thinkdeep_prompt.py +0 -0
  105. {clink_cli-0.2.1 → clink_cli-0.2.2}/systemprompts/tracer_prompt.py +0 -0
  106. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/__init__.py +0 -0
  107. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/analyze.py +0 -0
  108. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/apilookup.py +0 -0
  109. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/challenge.py +0 -0
  110. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/chat.py +0 -0
  111. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/clink.py +0 -0
  112. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/codereview.py +0 -0
  113. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/consensus.py +0 -0
  114. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/debug.py +0 -0
  115. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/docgen.py +0 -0
  116. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/listmodels.py +0 -0
  117. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/models.py +0 -0
  118. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/planner.py +0 -0
  119. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/precommit.py +0 -0
  120. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/refactor.py +0 -0
  121. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/secaudit.py +0 -0
  122. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/shared/__init__.py +0 -0
  123. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/shared/base_models.py +0 -0
  124. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/shared/base_tool.py +0 -0
  125. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/shared/exceptions.py +0 -0
  126. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/shared/schema_builders.py +0 -0
  127. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/simple/__init__.py +0 -0
  128. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/simple/base.py +0 -0
  129. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/testgen.py +0 -0
  130. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/thinkdeep.py +0 -0
  131. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/tracer.py +0 -0
  132. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/version.py +0 -0
  133. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/workflow/__init__.py +0 -0
  134. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/workflow/base.py +0 -0
  135. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/workflow/schema_builders.py +0 -0
  136. {clink_cli-0.2.1 → clink_cli-0.2.2}/tools/workflow/workflow_mixin.py +0 -0
  137. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/__init__.py +0 -0
  138. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/call_state.py +0 -0
  139. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/client_info.py +0 -0
  140. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/consensus_manifest.py +0 -0
  141. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/conversation_memory.py +0 -0
  142. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/env.py +0 -0
  143. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/file_types.py +0 -0
  144. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/file_utils.py +0 -0
  145. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/image_utils.py +0 -0
  146. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/security_config.py +0 -0
  147. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/storage_backend.py +0 -0
  148. {clink_cli-0.2.1 → clink_cli-0.2.2}/utils/token_utils.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clink-cli
3
- Version: 0.2.1
4
- Summary: CLI consultation and native agent task delegation over the Model Context Protocol
3
+ Version: 0.2.2
4
+ Summary: Call installed CLI agents from scripts with JSON, or connect them to an MCP client
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/acebytes/clink-mcp-server
7
7
  Project-URL: Repository, https://github.com/acebytes/clink-mcp-server
@@ -16,13 +16,32 @@ Requires-Dist: pydantic>=2.0.0
16
16
  Requires-Dist: python-dotenv>=1.0.0
17
17
  Dynamic: license-file
18
18
 
19
- # clink-mcp-server
19
+ # Clink CLI and MCP server
20
20
 
21
- Delegate work to installed CLI agents through MCP. Consultations return advice and proposed code. Explicit native tasks can edit files, run tests, and use the selected CLI's configured tools, hooks, skills, plugins, MCP integrations, and subagents under its native permissions.
21
+ Use `clink generate` to send a JSON request to an installed CLI agent from a script and read the result on stdout. To use Clink from Claude Code or another MCP client, connect `clink-mcp-server` for access to 18 tools. One Python package, `clink-cli`, installs both commands.
22
22
 
23
- Version **0.2.1** preserves PAL's **18 MCP tools** and adds a separate `clink generate` command for bounded programmatic text generation. The Python distribution is named `clink-cli` and installs both `clink` and `clink-mcp-server`.
23
+ Consultations return advice and proposed code. Explicit native tasks can edit files, run tests, and use the selected agent’s configured tools and permissions.
24
24
 
25
- Derived from [PAL MCP Server](https://github.com/BeehiveInnovations/pal-mcp-server), formerly Zen MCP. **Copyright 2025 Beehive Innovations.** Retains upstream attribution and the [Apache 2.0 license](LICENSE).
25
+ Derived from [PAL MCP Server](https://github.com/BeehiveInnovations/pal-mcp-server), formerly Zen MCP. **Copyright 2025 Beehive Innovations.** Retains upstream attribution and the [Apache 2.0 license](https://github.com/acebytes/clink-mcp-server/blob/main/LICENSE).
26
+
27
+ ## Install with uv
28
+
29
+ ```sh
30
+ uv tool install clink-cli
31
+ ```
32
+
33
+ This installs both `clink` and `clink-mcp-server` from [PyPI](https://pypi.org/project/clink-cli/). If you installed the v0.2.0 GitHub wheel with uv, run `uv tool uninstall clink-mcp-server` first to free the command names.
34
+
35
+ ## Connect to Claude Code
36
+
37
+ From the project directory where you use Claude Code, run:
38
+
39
+ ```sh
40
+ claude mcp add --scope local --transport stdio clink -- "$(uv tool dir --bin)/clink-mcp-server" --project "$PWD"
41
+ claude mcp get clink
42
+ ```
43
+
44
+ Look for **Connected**. Local scope keeps the registration private to you in this project, and `--project "$PWD"` tells Clink which workspace to use. Open Claude Code in the same directory and run `/mcp` to see `clink`. To check the connection without calling a model, ask Claude to use Clink’s `version` tool.
26
45
 
27
46
  ## Supported operations
28
47
 
@@ -36,27 +55,19 @@ Admission is specific to an operation, executable, launch recipe, and parser. Su
36
55
  | Antigravity 1.4.12 (`agy`) | Unverified. | Admitted. | Implemented but unverified; execution is refused. |
37
56
  | Gemini | Unverified. | Not implemented. | Not implemented. |
38
57
 
39
- The recorded admissions cover exact macOS arm64 binaries. Other builds, operating systems, versions, or changed recipes require verification and fail closed. An installed executable or successful login alone is insufficient. Grok reported `grok-4.7-build` in the recorded successful generation text/action checks. Antigravity's native-task actual model remains unknown; its native-task admission does not admit generation. See [release evidence and limits](docs/release-evidence.md).
58
+ The recorded admissions cover exact macOS arm64 binaries. Other builds, operating systems, versions, or changed recipes require verification and fail closed. An installed executable or successful login alone is insufficient. Grok reported `grok-4.7-build` in the recorded successful generation text/action checks. Antigravity's native-task actual model remains unknown; its native-task admission does not admit generation. See [release evidence and limits](https://github.com/acebytes/clink-mcp-server/blob/main/docs/release-evidence.md).
40
59
 
41
- Python 3.10+ is required; Python 3.12 is the tested runtime. Process supervision targets POSIX systems. Local discovery and offline tests can run without CLI credentials. Native Windows delegation is unavailable; the [container](docker/README.md) supports local tools without installing CLI agents.
60
+ Python 3.10+ is required; Python 3.12 is the tested runtime. Process supervision targets POSIX systems. Local discovery and offline tests can run without CLI credentials. Native Windows delegation is unavailable; the [container](https://github.com/acebytes/clink-mcp-server/blob/main/docker/README.md) supports local tools without installing CLI agents.
42
61
 
43
62
  ## Install and connect
44
63
 
45
- To install the PyPI release into an isolated tool environment, use:
46
-
47
- ```sh
48
- uv tool install clink-cli
49
- clink generation-capabilities --json
50
- clink-mcp-server --help
51
- ```
52
-
53
- If you installed the v0.2.0 GitHub wheel with uv, run `uv tool uninstall clink-mcp-server` first so both executable names are available to the new distribution.
64
+ ### Install from a wheel or source checkout
54
65
 
55
66
  For a standalone wheel installation, replace the wheel path and choose a persistent environment outside the source tree:
56
67
 
57
68
  ```sh
58
69
  python3 -m venv /absolute/path/to/clink-runtime
59
- /absolute/path/to/clink-runtime/bin/python -m pip install /absolute/path/to/clink_cli-0.2.1-py3-none-any.whl
70
+ /absolute/path/to/clink-runtime/bin/python -m pip install /absolute/path/to/clink_cli-0.2.2-py3-none-any.whl
60
71
  /absolute/path/to/clink-runtime/bin/python -m clink.setup --project /absolute/path/to/your-project
61
72
  ```
62
73
 
@@ -73,14 +84,14 @@ The installed package contains its manifests, prompts, and admission resources.
73
84
  }
74
85
  ```
75
86
 
76
- Alternatively, from the reviewed 0.2.1 source tree:
87
+ Alternatively, from the reviewed 0.2.2 source tree:
77
88
 
78
89
  ```sh
79
90
  cd /absolute/path/to/clink-mcp-server
80
91
  ./run-server.sh --setup
81
92
  ```
82
93
 
83
- This explicitly creates `.venv`, installs runtime requirements, and exits. Ordinary startup installs nothing. The launcher does not create `.env`, copy credentials, change native CLI configuration, or register MCP clients. Optional server settings are documented in [.env.example](.env.example). To build a wheel from this tree, install the development requirements and run `.venv/bin/python -m build`; the wheel is written under `dist/`.
94
+ This explicitly creates `.venv`, installs runtime requirements, and exits. Ordinary startup installs nothing. The launcher does not create `.env`, copy credentials, change native CLI configuration, or register MCP clients. Optional server settings are documented in [.env.example](https://github.com/acebytes/clink-mcp-server/blob/main/.env.example). To build a wheel from this tree, install the development requirements and run `.venv/bin/python -m build`; the wheel is written under `dist/`.
84
95
 
85
96
  Configure an existing project from that source installation:
86
97
 
@@ -97,7 +108,7 @@ cd /absolute/path/to/your-project
97
108
  claude --plugin-dir /absolute/path/to/clink-mcp-server/integrations/claude
98
109
  ```
99
110
 
100
- Then run `/clink:setup`. This command is available only when that local plugin is loaded; MCP registration alone does not install it. See the [project setup guide](docs/project-setup.md) for selected clients, configuration precedence, conflicts, and recovery.
111
+ Then run `/clink:setup`. This command is available only when that local plugin is loaded; MCP registration alone does not install it. See the [project setup guide](https://github.com/acebytes/clink-mcp-server/blob/main/docs/project-setup.md) for selected clients, configuration precedence, conflicts, and recovery.
101
112
 
102
113
  For another MCP client, adapt this stdio registration to its configuration format:
103
114
 
@@ -112,7 +123,7 @@ For another MCP client, adapt this stdio registration to its configuration forma
112
123
  }
113
124
  ```
114
125
 
115
- Authenticate the chosen CLI through its own login mechanism before an admitted model call. Ensure the MCP client's `PATH` can find it, or configure its executable path in a manifest. The server does not require hosted-provider API keys. See [getting started](docs/getting-started.md), [CLI configuration](docs/cli-configuration.md), and [migration from PAL](docs/migration.md).
126
+ Authenticate the chosen CLI through its own login mechanism before an admitted model call. Ensure the MCP client's `PATH` can find it, or configure its executable path in a manifest. The server does not require hosted-provider API keys. See [getting started](https://github.com/acebytes/clink-mcp-server/blob/main/docs/getting-started.md), [CLI configuration](https://github.com/acebytes/clink-mcp-server/blob/main/docs/cli-configuration.md), and [migration from PAL](https://github.com/acebytes/clink-mcp-server/blob/main/docs/migration.md).
116
127
 
117
128
  ## Consult or delegate
118
129
 
@@ -149,7 +160,7 @@ Save the returned `task_handle`. Poll, follow up when `followup_available` is tr
149
160
  {"action":"cancel","task_handle":"<returned task_handle>"}
150
161
  ```
151
162
 
152
- A follow-up resumes the private native session with a new attempt; native handles are separate from consultation `continuation_id` values. Identical submissions with the same request key are deduplicated while retained. Changed input with that key returns `request_key_conflict`. Handles, session mapping, and deduplication are volatile and are lost on restart. See [native task usage](docs/native-cli-tasks.md) for states, bounds, and ownership rules.
163
+ A follow-up resumes the private native session with a new attempt; native handles are separate from consultation `continuation_id` values. Identical submissions with the same request key are deduplicated while retained. Changed input with that key returns `request_key_conflict`. Handles, session mapping, and deduplication are volatile and are lost on restart. See [native task usage](https://github.com/acebytes/clink-mcp-server/blob/main/docs/native-cli-tasks.md) for states, bounds, and ownership rules.
153
164
 
154
165
  ## Programmatic generation
155
166
 
@@ -192,7 +203,7 @@ Schema 3 example `request.json`, using an existing canonical project path:
192
203
 
193
204
  Generation reads one JSON request followed by EOF and writes one terminal JSON result. Schema 3 uses `model_selection`: Codex and Claude require `{"kind":"explicit","id":"<native model ID>"}`; Grok and Antigravity accept only `{"kind":"native_default"}`. Antigravity still refuses execution because its generation admission is unverified. Schema 2 preserves Codex/Claude's explicit `model` field. The older no-tools schema 1 profile remains refused.
194
205
 
195
- Each accepted request makes at most one top-level CLI invocation, with no wrapper retry, resume, or fallback. Only `status: "completed"` with exit `0` is ordinary success; validate the result's request identity and hashes before using its text. Completion validates final-response transport, not fulfillment. Requested/effective model selection is distinct from CLI-reported actual identity, which remains `null` when unreported. See [generation setup](docs/generation-native-setup.md), [schema 2 protocol](docs/generation-native-protocol.md), and [schema 3 and family discovery](docs/generation-native-families.md).
206
+ Each accepted request makes at most one top-level CLI invocation, with no wrapper retry, resume, or fallback. Only `status: "completed"` with exit `0` is ordinary success; validate the result's request identity and hashes before using its text. Completion validates final-response transport, not fulfillment. Requested/effective model selection is distinct from CLI-reported actual identity, which remains `null` when unreported. See [generation setup](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-setup.md), [schema 2 protocol](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-protocol.md), and [schema 3 and family discovery](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-families.md).
196
207
 
197
208
  ## Tools and configuration
198
209
 
@@ -207,9 +218,9 @@ All 18 tools are enabled unless listed in `DISABLED_TOOLS`; `version` and `listm
207
218
  | `planner`, `docgen`, `tracer`, `challenge` | Local workflow guidance. |
208
219
  | `listmodels`, `version` | Local configuration discovery and provenance. |
209
220
 
210
- Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → user `~/.clink/cli_clients/` → explicitly bound project `.clink/cli_clients/` → `CLI_CLIENTS_CONFIG_PATH`. Each later manifest replaces the entire named client. Consultation and native task model defaults are separate; generation has its own request and admission contracts. See [CLI configuration](docs/cli-configuration.md).
221
+ Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → user `~/.clink/cli_clients/` → explicitly bound project `.clink/cli_clients/` → `CLI_CLIENTS_CONFIG_PATH`. Each later manifest replaces the entire named client. Consultation and native task model defaults are separate; generation has its own request and admission contracts. See [CLI configuration](https://github.com/acebytes/clink-mcp-server/blob/main/docs/cli-configuration.md).
211
222
 
212
- **Risk & Mitigation:** Native execution can change files or external systems before failure or cancellation. Approved roots constrain project selection and supplied context, not all native authority. Cancellation does not roll back effects or guarantee detached/remote work stopped. Inspect actual changes and independently run checks before accepting work. Clink preserves native permission controls and provides no approval bypass or relay. See [security policy](SECURITY.md).
223
+ **Risk & Mitigation:** Native execution can change files or external systems before failure or cancellation. Approved roots constrain project selection and supplied context, not all native authority. Cancellation does not roll back effects or guarantee detached/remote work stopped. Inspect actual changes and independently run checks before accepting work. Clink preserves native permission controls and provides no approval bypass or relay. See [security policy](https://github.com/acebytes/clink-mcp-server/blob/main/SECURITY.md).
213
224
 
214
225
  ## Development
215
226
 
@@ -222,4 +233,4 @@ Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → use
222
233
  .venv/bin/python -m build
223
234
  ```
224
235
 
225
- Ordinary verification uses synthetic executables and makes no live model calls. Historical live verification requires the private evidence and approval process; the public verification scripts do not submit model requests. See [release evidence](docs/release-evidence.md) and [changelog](CHANGELOG.md). Report bugs in this fork's [issue tracker](https://github.com/acebytes/clink-mcp-server/issues), excluding secrets and private transcripts.
236
+ Ordinary verification uses synthetic executables and makes no live model calls. Historical live verification requires the private evidence and approval process; the public verification scripts do not submit model requests. See [release evidence](https://github.com/acebytes/clink-mcp-server/blob/main/docs/release-evidence.md) and [changelog](https://github.com/acebytes/clink-mcp-server/blob/main/CHANGELOG.md). Report bugs in this fork's [issue tracker](https://github.com/acebytes/clink-mcp-server/issues), excluding secrets and private transcripts.
@@ -1,10 +1,29 @@
1
- # clink-mcp-server
1
+ # Clink CLI and MCP server
2
2
 
3
- Delegate work to installed CLI agents through MCP. Consultations return advice and proposed code. Explicit native tasks can edit files, run tests, and use the selected CLI's configured tools, hooks, skills, plugins, MCP integrations, and subagents under its native permissions.
3
+ Use `clink generate` to send a JSON request to an installed CLI agent from a script and read the result on stdout. To use Clink from Claude Code or another MCP client, connect `clink-mcp-server` for access to 18 tools. One Python package, `clink-cli`, installs both commands.
4
4
 
5
- Version **0.2.1** preserves PAL's **18 MCP tools** and adds a separate `clink generate` command for bounded programmatic text generation. The Python distribution is named `clink-cli` and installs both `clink` and `clink-mcp-server`.
5
+ Consultations return advice and proposed code. Explicit native tasks can edit files, run tests, and use the selected agent’s configured tools and permissions.
6
6
 
7
- Derived from [PAL MCP Server](https://github.com/BeehiveInnovations/pal-mcp-server), formerly Zen MCP. **Copyright 2025 Beehive Innovations.** Retains upstream attribution and the [Apache 2.0 license](LICENSE).
7
+ Derived from [PAL MCP Server](https://github.com/BeehiveInnovations/pal-mcp-server), formerly Zen MCP. **Copyright 2025 Beehive Innovations.** Retains upstream attribution and the [Apache 2.0 license](https://github.com/acebytes/clink-mcp-server/blob/main/LICENSE).
8
+
9
+ ## Install with uv
10
+
11
+ ```sh
12
+ uv tool install clink-cli
13
+ ```
14
+
15
+ This installs both `clink` and `clink-mcp-server` from [PyPI](https://pypi.org/project/clink-cli/). If you installed the v0.2.0 GitHub wheel with uv, run `uv tool uninstall clink-mcp-server` first to free the command names.
16
+
17
+ ## Connect to Claude Code
18
+
19
+ From the project directory where you use Claude Code, run:
20
+
21
+ ```sh
22
+ claude mcp add --scope local --transport stdio clink -- "$(uv tool dir --bin)/clink-mcp-server" --project "$PWD"
23
+ claude mcp get clink
24
+ ```
25
+
26
+ Look for **Connected**. Local scope keeps the registration private to you in this project, and `--project "$PWD"` tells Clink which workspace to use. Open Claude Code in the same directory and run `/mcp` to see `clink`. To check the connection without calling a model, ask Claude to use Clink’s `version` tool.
8
27
 
9
28
  ## Supported operations
10
29
 
@@ -18,27 +37,19 @@ Admission is specific to an operation, executable, launch recipe, and parser. Su
18
37
  | Antigravity 1.4.12 (`agy`) | Unverified. | Admitted. | Implemented but unverified; execution is refused. |
19
38
  | Gemini | Unverified. | Not implemented. | Not implemented. |
20
39
 
21
- The recorded admissions cover exact macOS arm64 binaries. Other builds, operating systems, versions, or changed recipes require verification and fail closed. An installed executable or successful login alone is insufficient. Grok reported `grok-4.7-build` in the recorded successful generation text/action checks. Antigravity's native-task actual model remains unknown; its native-task admission does not admit generation. See [release evidence and limits](docs/release-evidence.md).
40
+ The recorded admissions cover exact macOS arm64 binaries. Other builds, operating systems, versions, or changed recipes require verification and fail closed. An installed executable or successful login alone is insufficient. Grok reported `grok-4.7-build` in the recorded successful generation text/action checks. Antigravity's native-task actual model remains unknown; its native-task admission does not admit generation. See [release evidence and limits](https://github.com/acebytes/clink-mcp-server/blob/main/docs/release-evidence.md).
22
41
 
23
- Python 3.10+ is required; Python 3.12 is the tested runtime. Process supervision targets POSIX systems. Local discovery and offline tests can run without CLI credentials. Native Windows delegation is unavailable; the [container](docker/README.md) supports local tools without installing CLI agents.
42
+ Python 3.10+ is required; Python 3.12 is the tested runtime. Process supervision targets POSIX systems. Local discovery and offline tests can run without CLI credentials. Native Windows delegation is unavailable; the [container](https://github.com/acebytes/clink-mcp-server/blob/main/docker/README.md) supports local tools without installing CLI agents.
24
43
 
25
44
  ## Install and connect
26
45
 
27
- To install the PyPI release into an isolated tool environment, use:
28
-
29
- ```sh
30
- uv tool install clink-cli
31
- clink generation-capabilities --json
32
- clink-mcp-server --help
33
- ```
34
-
35
- If you installed the v0.2.0 GitHub wheel with uv, run `uv tool uninstall clink-mcp-server` first so both executable names are available to the new distribution.
46
+ ### Install from a wheel or source checkout
36
47
 
37
48
  For a standalone wheel installation, replace the wheel path and choose a persistent environment outside the source tree:
38
49
 
39
50
  ```sh
40
51
  python3 -m venv /absolute/path/to/clink-runtime
41
- /absolute/path/to/clink-runtime/bin/python -m pip install /absolute/path/to/clink_cli-0.2.1-py3-none-any.whl
52
+ /absolute/path/to/clink-runtime/bin/python -m pip install /absolute/path/to/clink_cli-0.2.2-py3-none-any.whl
42
53
  /absolute/path/to/clink-runtime/bin/python -m clink.setup --project /absolute/path/to/your-project
43
54
  ```
44
55
 
@@ -55,14 +66,14 @@ The installed package contains its manifests, prompts, and admission resources.
55
66
  }
56
67
  ```
57
68
 
58
- Alternatively, from the reviewed 0.2.1 source tree:
69
+ Alternatively, from the reviewed 0.2.2 source tree:
59
70
 
60
71
  ```sh
61
72
  cd /absolute/path/to/clink-mcp-server
62
73
  ./run-server.sh --setup
63
74
  ```
64
75
 
65
- This explicitly creates `.venv`, installs runtime requirements, and exits. Ordinary startup installs nothing. The launcher does not create `.env`, copy credentials, change native CLI configuration, or register MCP clients. Optional server settings are documented in [.env.example](.env.example). To build a wheel from this tree, install the development requirements and run `.venv/bin/python -m build`; the wheel is written under `dist/`.
76
+ This explicitly creates `.venv`, installs runtime requirements, and exits. Ordinary startup installs nothing. The launcher does not create `.env`, copy credentials, change native CLI configuration, or register MCP clients. Optional server settings are documented in [.env.example](https://github.com/acebytes/clink-mcp-server/blob/main/.env.example). To build a wheel from this tree, install the development requirements and run `.venv/bin/python -m build`; the wheel is written under `dist/`.
66
77
 
67
78
  Configure an existing project from that source installation:
68
79
 
@@ -79,7 +90,7 @@ cd /absolute/path/to/your-project
79
90
  claude --plugin-dir /absolute/path/to/clink-mcp-server/integrations/claude
80
91
  ```
81
92
 
82
- Then run `/clink:setup`. This command is available only when that local plugin is loaded; MCP registration alone does not install it. See the [project setup guide](docs/project-setup.md) for selected clients, configuration precedence, conflicts, and recovery.
93
+ Then run `/clink:setup`. This command is available only when that local plugin is loaded; MCP registration alone does not install it. See the [project setup guide](https://github.com/acebytes/clink-mcp-server/blob/main/docs/project-setup.md) for selected clients, configuration precedence, conflicts, and recovery.
83
94
 
84
95
  For another MCP client, adapt this stdio registration to its configuration format:
85
96
 
@@ -94,7 +105,7 @@ For another MCP client, adapt this stdio registration to its configuration forma
94
105
  }
95
106
  ```
96
107
 
97
- Authenticate the chosen CLI through its own login mechanism before an admitted model call. Ensure the MCP client's `PATH` can find it, or configure its executable path in a manifest. The server does not require hosted-provider API keys. See [getting started](docs/getting-started.md), [CLI configuration](docs/cli-configuration.md), and [migration from PAL](docs/migration.md).
108
+ Authenticate the chosen CLI through its own login mechanism before an admitted model call. Ensure the MCP client's `PATH` can find it, or configure its executable path in a manifest. The server does not require hosted-provider API keys. See [getting started](https://github.com/acebytes/clink-mcp-server/blob/main/docs/getting-started.md), [CLI configuration](https://github.com/acebytes/clink-mcp-server/blob/main/docs/cli-configuration.md), and [migration from PAL](https://github.com/acebytes/clink-mcp-server/blob/main/docs/migration.md).
98
109
 
99
110
  ## Consult or delegate
100
111
 
@@ -131,7 +142,7 @@ Save the returned `task_handle`. Poll, follow up when `followup_available` is tr
131
142
  {"action":"cancel","task_handle":"<returned task_handle>"}
132
143
  ```
133
144
 
134
- A follow-up resumes the private native session with a new attempt; native handles are separate from consultation `continuation_id` values. Identical submissions with the same request key are deduplicated while retained. Changed input with that key returns `request_key_conflict`. Handles, session mapping, and deduplication are volatile and are lost on restart. See [native task usage](docs/native-cli-tasks.md) for states, bounds, and ownership rules.
145
+ A follow-up resumes the private native session with a new attempt; native handles are separate from consultation `continuation_id` values. Identical submissions with the same request key are deduplicated while retained. Changed input with that key returns `request_key_conflict`. Handles, session mapping, and deduplication are volatile and are lost on restart. See [native task usage](https://github.com/acebytes/clink-mcp-server/blob/main/docs/native-cli-tasks.md) for states, bounds, and ownership rules.
135
146
 
136
147
  ## Programmatic generation
137
148
 
@@ -174,7 +185,7 @@ Schema 3 example `request.json`, using an existing canonical project path:
174
185
 
175
186
  Generation reads one JSON request followed by EOF and writes one terminal JSON result. Schema 3 uses `model_selection`: Codex and Claude require `{"kind":"explicit","id":"<native model ID>"}`; Grok and Antigravity accept only `{"kind":"native_default"}`. Antigravity still refuses execution because its generation admission is unverified. Schema 2 preserves Codex/Claude's explicit `model` field. The older no-tools schema 1 profile remains refused.
176
187
 
177
- Each accepted request makes at most one top-level CLI invocation, with no wrapper retry, resume, or fallback. Only `status: "completed"` with exit `0` is ordinary success; validate the result's request identity and hashes before using its text. Completion validates final-response transport, not fulfillment. Requested/effective model selection is distinct from CLI-reported actual identity, which remains `null` when unreported. See [generation setup](docs/generation-native-setup.md), [schema 2 protocol](docs/generation-native-protocol.md), and [schema 3 and family discovery](docs/generation-native-families.md).
188
+ Each accepted request makes at most one top-level CLI invocation, with no wrapper retry, resume, or fallback. Only `status: "completed"` with exit `0` is ordinary success; validate the result's request identity and hashes before using its text. Completion validates final-response transport, not fulfillment. Requested/effective model selection is distinct from CLI-reported actual identity, which remains `null` when unreported. See [generation setup](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-setup.md), [schema 2 protocol](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-protocol.md), and [schema 3 and family discovery](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-families.md).
178
189
 
179
190
  ## Tools and configuration
180
191
 
@@ -189,9 +200,9 @@ All 18 tools are enabled unless listed in `DISABLED_TOOLS`; `version` and `listm
189
200
  | `planner`, `docgen`, `tracer`, `challenge` | Local workflow guidance. |
190
201
  | `listmodels`, `version` | Local configuration discovery and provenance. |
191
202
 
192
- Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → user `~/.clink/cli_clients/` → explicitly bound project `.clink/cli_clients/` → `CLI_CLIENTS_CONFIG_PATH`. Each later manifest replaces the entire named client. Consultation and native task model defaults are separate; generation has its own request and admission contracts. See [CLI configuration](docs/cli-configuration.md).
203
+ Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → user `~/.clink/cli_clients/` → explicitly bound project `.clink/cli_clients/` → `CLI_CLIENTS_CONFIG_PATH`. Each later manifest replaces the entire named client. Consultation and native task model defaults are separate; generation has its own request and admission contracts. See [CLI configuration](https://github.com/acebytes/clink-mcp-server/blob/main/docs/cli-configuration.md).
193
204
 
194
- **Risk & Mitigation:** Native execution can change files or external systems before failure or cancellation. Approved roots constrain project selection and supplied context, not all native authority. Cancellation does not roll back effects or guarantee detached/remote work stopped. Inspect actual changes and independently run checks before accepting work. Clink preserves native permission controls and provides no approval bypass or relay. See [security policy](SECURITY.md).
205
+ **Risk & Mitigation:** Native execution can change files or external systems before failure or cancellation. Approved roots constrain project selection and supplied context, not all native authority. Cancellation does not roll back effects or guarantee detached/remote work stopped. Inspect actual changes and independently run checks before accepting work. Clink preserves native permission controls and provides no approval bypass or relay. See [security policy](https://github.com/acebytes/clink-mcp-server/blob/main/SECURITY.md).
195
206
 
196
207
  ## Development
197
208
 
@@ -204,4 +215,4 @@ Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → use
204
215
  .venv/bin/python -m build
205
216
  ```
206
217
 
207
- Ordinary verification uses synthetic executables and makes no live model calls. Historical live verification requires the private evidence and approval process; the public verification scripts do not submit model requests. See [release evidence](docs/release-evidence.md) and [changelog](CHANGELOG.md). Report bugs in this fork's [issue tracker](https://github.com/acebytes/clink-mcp-server/issues), excluding secrets and private transcripts.
218
+ Ordinary verification uses synthetic executables and makes no live model calls. Historical live verification requires the private evidence and approval process; the public verification scripts do not submit model requests. See [release evidence](https://github.com/acebytes/clink-mcp-server/blob/main/docs/release-evidence.md) and [changelog](https://github.com/acebytes/clink-mcp-server/blob/main/CHANGELOG.md). Report bugs in this fork's [issue tracker](https://github.com/acebytes/clink-mcp-server/issues), excluding secrets and private transcripts.
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clink-cli
3
- Version: 0.2.1
4
- Summary: CLI consultation and native agent task delegation over the Model Context Protocol
3
+ Version: 0.2.2
4
+ Summary: Call installed CLI agents from scripts with JSON, or connect them to an MCP client
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/acebytes/clink-mcp-server
7
7
  Project-URL: Repository, https://github.com/acebytes/clink-mcp-server
@@ -16,13 +16,32 @@ Requires-Dist: pydantic>=2.0.0
16
16
  Requires-Dist: python-dotenv>=1.0.0
17
17
  Dynamic: license-file
18
18
 
19
- # clink-mcp-server
19
+ # Clink CLI and MCP server
20
20
 
21
- Delegate work to installed CLI agents through MCP. Consultations return advice and proposed code. Explicit native tasks can edit files, run tests, and use the selected CLI's configured tools, hooks, skills, plugins, MCP integrations, and subagents under its native permissions.
21
+ Use `clink generate` to send a JSON request to an installed CLI agent from a script and read the result on stdout. To use Clink from Claude Code or another MCP client, connect `clink-mcp-server` for access to 18 tools. One Python package, `clink-cli`, installs both commands.
22
22
 
23
- Version **0.2.1** preserves PAL's **18 MCP tools** and adds a separate `clink generate` command for bounded programmatic text generation. The Python distribution is named `clink-cli` and installs both `clink` and `clink-mcp-server`.
23
+ Consultations return advice and proposed code. Explicit native tasks can edit files, run tests, and use the selected agent’s configured tools and permissions.
24
24
 
25
- Derived from [PAL MCP Server](https://github.com/BeehiveInnovations/pal-mcp-server), formerly Zen MCP. **Copyright 2025 Beehive Innovations.** Retains upstream attribution and the [Apache 2.0 license](LICENSE).
25
+ Derived from [PAL MCP Server](https://github.com/BeehiveInnovations/pal-mcp-server), formerly Zen MCP. **Copyright 2025 Beehive Innovations.** Retains upstream attribution and the [Apache 2.0 license](https://github.com/acebytes/clink-mcp-server/blob/main/LICENSE).
26
+
27
+ ## Install with uv
28
+
29
+ ```sh
30
+ uv tool install clink-cli
31
+ ```
32
+
33
+ This installs both `clink` and `clink-mcp-server` from [PyPI](https://pypi.org/project/clink-cli/). If you installed the v0.2.0 GitHub wheel with uv, run `uv tool uninstall clink-mcp-server` first to free the command names.
34
+
35
+ ## Connect to Claude Code
36
+
37
+ From the project directory where you use Claude Code, run:
38
+
39
+ ```sh
40
+ claude mcp add --scope local --transport stdio clink -- "$(uv tool dir --bin)/clink-mcp-server" --project "$PWD"
41
+ claude mcp get clink
42
+ ```
43
+
44
+ Look for **Connected**. Local scope keeps the registration private to you in this project, and `--project "$PWD"` tells Clink which workspace to use. Open Claude Code in the same directory and run `/mcp` to see `clink`. To check the connection without calling a model, ask Claude to use Clink’s `version` tool.
26
45
 
27
46
  ## Supported operations
28
47
 
@@ -36,27 +55,19 @@ Admission is specific to an operation, executable, launch recipe, and parser. Su
36
55
  | Antigravity 1.4.12 (`agy`) | Unverified. | Admitted. | Implemented but unverified; execution is refused. |
37
56
  | Gemini | Unverified. | Not implemented. | Not implemented. |
38
57
 
39
- The recorded admissions cover exact macOS arm64 binaries. Other builds, operating systems, versions, or changed recipes require verification and fail closed. An installed executable or successful login alone is insufficient. Grok reported `grok-4.7-build` in the recorded successful generation text/action checks. Antigravity's native-task actual model remains unknown; its native-task admission does not admit generation. See [release evidence and limits](docs/release-evidence.md).
58
+ The recorded admissions cover exact macOS arm64 binaries. Other builds, operating systems, versions, or changed recipes require verification and fail closed. An installed executable or successful login alone is insufficient. Grok reported `grok-4.7-build` in the recorded successful generation text/action checks. Antigravity's native-task actual model remains unknown; its native-task admission does not admit generation. See [release evidence and limits](https://github.com/acebytes/clink-mcp-server/blob/main/docs/release-evidence.md).
40
59
 
41
- Python 3.10+ is required; Python 3.12 is the tested runtime. Process supervision targets POSIX systems. Local discovery and offline tests can run without CLI credentials. Native Windows delegation is unavailable; the [container](docker/README.md) supports local tools without installing CLI agents.
60
+ Python 3.10+ is required; Python 3.12 is the tested runtime. Process supervision targets POSIX systems. Local discovery and offline tests can run without CLI credentials. Native Windows delegation is unavailable; the [container](https://github.com/acebytes/clink-mcp-server/blob/main/docker/README.md) supports local tools without installing CLI agents.
42
61
 
43
62
  ## Install and connect
44
63
 
45
- To install the PyPI release into an isolated tool environment, use:
46
-
47
- ```sh
48
- uv tool install clink-cli
49
- clink generation-capabilities --json
50
- clink-mcp-server --help
51
- ```
52
-
53
- If you installed the v0.2.0 GitHub wheel with uv, run `uv tool uninstall clink-mcp-server` first so both executable names are available to the new distribution.
64
+ ### Install from a wheel or source checkout
54
65
 
55
66
  For a standalone wheel installation, replace the wheel path and choose a persistent environment outside the source tree:
56
67
 
57
68
  ```sh
58
69
  python3 -m venv /absolute/path/to/clink-runtime
59
- /absolute/path/to/clink-runtime/bin/python -m pip install /absolute/path/to/clink_cli-0.2.1-py3-none-any.whl
70
+ /absolute/path/to/clink-runtime/bin/python -m pip install /absolute/path/to/clink_cli-0.2.2-py3-none-any.whl
60
71
  /absolute/path/to/clink-runtime/bin/python -m clink.setup --project /absolute/path/to/your-project
61
72
  ```
62
73
 
@@ -73,14 +84,14 @@ The installed package contains its manifests, prompts, and admission resources.
73
84
  }
74
85
  ```
75
86
 
76
- Alternatively, from the reviewed 0.2.1 source tree:
87
+ Alternatively, from the reviewed 0.2.2 source tree:
77
88
 
78
89
  ```sh
79
90
  cd /absolute/path/to/clink-mcp-server
80
91
  ./run-server.sh --setup
81
92
  ```
82
93
 
83
- This explicitly creates `.venv`, installs runtime requirements, and exits. Ordinary startup installs nothing. The launcher does not create `.env`, copy credentials, change native CLI configuration, or register MCP clients. Optional server settings are documented in [.env.example](.env.example). To build a wheel from this tree, install the development requirements and run `.venv/bin/python -m build`; the wheel is written under `dist/`.
94
+ This explicitly creates `.venv`, installs runtime requirements, and exits. Ordinary startup installs nothing. The launcher does not create `.env`, copy credentials, change native CLI configuration, or register MCP clients. Optional server settings are documented in [.env.example](https://github.com/acebytes/clink-mcp-server/blob/main/.env.example). To build a wheel from this tree, install the development requirements and run `.venv/bin/python -m build`; the wheel is written under `dist/`.
84
95
 
85
96
  Configure an existing project from that source installation:
86
97
 
@@ -97,7 +108,7 @@ cd /absolute/path/to/your-project
97
108
  claude --plugin-dir /absolute/path/to/clink-mcp-server/integrations/claude
98
109
  ```
99
110
 
100
- Then run `/clink:setup`. This command is available only when that local plugin is loaded; MCP registration alone does not install it. See the [project setup guide](docs/project-setup.md) for selected clients, configuration precedence, conflicts, and recovery.
111
+ Then run `/clink:setup`. This command is available only when that local plugin is loaded; MCP registration alone does not install it. See the [project setup guide](https://github.com/acebytes/clink-mcp-server/blob/main/docs/project-setup.md) for selected clients, configuration precedence, conflicts, and recovery.
101
112
 
102
113
  For another MCP client, adapt this stdio registration to its configuration format:
103
114
 
@@ -112,7 +123,7 @@ For another MCP client, adapt this stdio registration to its configuration forma
112
123
  }
113
124
  ```
114
125
 
115
- Authenticate the chosen CLI through its own login mechanism before an admitted model call. Ensure the MCP client's `PATH` can find it, or configure its executable path in a manifest. The server does not require hosted-provider API keys. See [getting started](docs/getting-started.md), [CLI configuration](docs/cli-configuration.md), and [migration from PAL](docs/migration.md).
126
+ Authenticate the chosen CLI through its own login mechanism before an admitted model call. Ensure the MCP client's `PATH` can find it, or configure its executable path in a manifest. The server does not require hosted-provider API keys. See [getting started](https://github.com/acebytes/clink-mcp-server/blob/main/docs/getting-started.md), [CLI configuration](https://github.com/acebytes/clink-mcp-server/blob/main/docs/cli-configuration.md), and [migration from PAL](https://github.com/acebytes/clink-mcp-server/blob/main/docs/migration.md).
116
127
 
117
128
  ## Consult or delegate
118
129
 
@@ -149,7 +160,7 @@ Save the returned `task_handle`. Poll, follow up when `followup_available` is tr
149
160
  {"action":"cancel","task_handle":"<returned task_handle>"}
150
161
  ```
151
162
 
152
- A follow-up resumes the private native session with a new attempt; native handles are separate from consultation `continuation_id` values. Identical submissions with the same request key are deduplicated while retained. Changed input with that key returns `request_key_conflict`. Handles, session mapping, and deduplication are volatile and are lost on restart. See [native task usage](docs/native-cli-tasks.md) for states, bounds, and ownership rules.
163
+ A follow-up resumes the private native session with a new attempt; native handles are separate from consultation `continuation_id` values. Identical submissions with the same request key are deduplicated while retained. Changed input with that key returns `request_key_conflict`. Handles, session mapping, and deduplication are volatile and are lost on restart. See [native task usage](https://github.com/acebytes/clink-mcp-server/blob/main/docs/native-cli-tasks.md) for states, bounds, and ownership rules.
153
164
 
154
165
  ## Programmatic generation
155
166
 
@@ -192,7 +203,7 @@ Schema 3 example `request.json`, using an existing canonical project path:
192
203
 
193
204
  Generation reads one JSON request followed by EOF and writes one terminal JSON result. Schema 3 uses `model_selection`: Codex and Claude require `{"kind":"explicit","id":"<native model ID>"}`; Grok and Antigravity accept only `{"kind":"native_default"}`. Antigravity still refuses execution because its generation admission is unverified. Schema 2 preserves Codex/Claude's explicit `model` field. The older no-tools schema 1 profile remains refused.
194
205
 
195
- Each accepted request makes at most one top-level CLI invocation, with no wrapper retry, resume, or fallback. Only `status: "completed"` with exit `0` is ordinary success; validate the result's request identity and hashes before using its text. Completion validates final-response transport, not fulfillment. Requested/effective model selection is distinct from CLI-reported actual identity, which remains `null` when unreported. See [generation setup](docs/generation-native-setup.md), [schema 2 protocol](docs/generation-native-protocol.md), and [schema 3 and family discovery](docs/generation-native-families.md).
206
+ Each accepted request makes at most one top-level CLI invocation, with no wrapper retry, resume, or fallback. Only `status: "completed"` with exit `0` is ordinary success; validate the result's request identity and hashes before using its text. Completion validates final-response transport, not fulfillment. Requested/effective model selection is distinct from CLI-reported actual identity, which remains `null` when unreported. See [generation setup](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-setup.md), [schema 2 protocol](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-protocol.md), and [schema 3 and family discovery](https://github.com/acebytes/clink-mcp-server/blob/main/docs/generation-native-families.md).
196
207
 
197
208
  ## Tools and configuration
198
209
 
@@ -207,9 +218,9 @@ All 18 tools are enabled unless listed in `DISABLED_TOOLS`; `version` and `listm
207
218
  | `planner`, `docgen`, `tracer`, `challenge` | Local workflow guidance. |
208
219
  | `listmodels`, `version` | Local configuration discovery and provenance. |
209
220
 
210
- Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → user `~/.clink/cli_clients/` → explicitly bound project `.clink/cli_clients/` → `CLI_CLIENTS_CONFIG_PATH`. Each later manifest replaces the entire named client. Consultation and native task model defaults are separate; generation has its own request and admission contracts. See [CLI configuration](docs/cli-configuration.md).
221
+ Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → user `~/.clink/cli_clients/` → explicitly bound project `.clink/cli_clients/` → `CLI_CLIENTS_CONFIG_PATH`. Each later manifest replaces the entire named client. Consultation and native task model defaults are separate; generation has its own request and admission contracts. See [CLI configuration](https://github.com/acebytes/clink-mcp-server/blob/main/docs/cli-configuration.md).
211
222
 
212
- **Risk & Mitigation:** Native execution can change files or external systems before failure or cancellation. Approved roots constrain project selection and supplied context, not all native authority. Cancellation does not roll back effects or guarantee detached/remote work stopped. Inspect actual changes and independently run checks before accepting work. Clink preserves native permission controls and provides no approval bypass or relay. See [security policy](SECURITY.md).
223
+ **Risk & Mitigation:** Native execution can change files or external systems before failure or cancellation. Approved roots constrain project selection and supplied context, not all native authority. Cancellation does not roll back effects or guarantee detached/remote work stopped. Inspect actual changes and independently run checks before accepting work. Clink preserves native permission controls and provides no approval bypass or relay. See [security policy](https://github.com/acebytes/clink-mcp-server/blob/main/SECURITY.md).
213
224
 
214
225
  ## Development
215
226
 
@@ -222,4 +233,4 @@ Manifest precedence is bundled defaults → legacy `~/.pal/cli_clients/` → use
222
233
  .venv/bin/python -m build
223
234
  ```
224
235
 
225
- Ordinary verification uses synthetic executables and makes no live model calls. Historical live verification requires the private evidence and approval process; the public verification scripts do not submit model requests. See [release evidence](docs/release-evidence.md) and [changelog](CHANGELOG.md). Report bugs in this fork's [issue tracker](https://github.com/acebytes/clink-mcp-server/issues), excluding secrets and private transcripts.
236
+ Ordinary verification uses synthetic executables and makes no live model calls. Historical live verification requires the private evidence and approval process; the public verification scripts do not submit model requests. See [release evidence](https://github.com/acebytes/clink-mcp-server/blob/main/docs/release-evidence.md) and [changelog](https://github.com/acebytes/clink-mcp-server/blob/main/CHANGELOG.md). Report bugs in this fork's [issue tracker](https://github.com/acebytes/clink-mcp-server/issues), excluding secrets and private transcripts.
@@ -2,7 +2,7 @@
2
2
 
3
3
  from utils.env import get_env
4
4
 
5
- __version__ = "0.2.1"
5
+ __version__ = "0.2.2"
6
6
  __updated__ = "2026-11-02"
7
7
  __author__ = "acebytes; derived from Beehive Innovations / Fahad Gilani"
8
8
  SOURCE_REPOSITORY = "https://github.com/BeehiveInnovations/pal-mcp-server"
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "clink-cli"
3
- version = "0.2.1"
4
- description = "CLI consultation and native agent task delegation over the Model Context Protocol"
3
+ version = "0.2.2"
4
+ description = "Call installed CLI agents from scripts with JSON, or connect them to an MCP client"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
7
7
  license-files = ["LICENSE", "clink/resources/CODEX-LICENSE", "clink/resources/CODEX-NOTICE"]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes