matimo-cli 0.1.2__tar.gz → 0.2.0__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.
@@ -58,7 +58,6 @@ temp/
58
58
 
59
59
  # Personal scratch notes / working docs — not part of the shipped repo
60
60
  .local-notes/
61
- typescript/examples/mcp/matimo-tools/.matimo-approvals.json
62
61
  typescript/examples/mcp/matimo-tools/fetch-weather/definition.yaml
63
62
  typescript/examples/mcp/matimo-tools/npm_downloads/definition.yaml
64
63
  typescript/examples/mcp/matimo-tools/skills/ecosystem-health/SKILL.md
@@ -68,3 +67,6 @@ typescript/packages/cli/.matimo/certs/server.crt
68
67
  typescript/packages/cli/.matimo/certs/server.key
69
68
  typescript/examples/mcp/.matimo/certs/server.crt
70
69
  typescript/examples/mcp/.matimo/certs/server.key
70
+
71
+ # HITL approval manifests are per-machine state (HMAC-signed approvals); never commit one
72
+ **/.matimo-approvals.json
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ROAIQ TECHNOLOGIES PRIVATE LIMITED
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,130 @@
1
+ Metadata-Version: 2.5
2
+ Name: matimo-cli
3
+ Version: 0.2.0
4
+ Summary: Matimo CLI — tool package manager & MCP server launcher
5
+ Author: Matimo
6
+ License: MIT
7
+ License-File: LICENSE
8
+ Keywords: ai-governance,ai-tools,cli,matimo,mcp,mcp-server,policy-engine
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Requires-Python: >=3.11
13
+ Requires-Dist: matimo-core[mcp]<0.3.0,>=0.2.0
14
+ Requires-Dist: mcp>=1.28.1
15
+ Requires-Dist: pyyaml>=6.0
16
+ Description-Content-Type: text/markdown
17
+
18
+ # matimo-cli
19
+
20
+ > Command-line interface for [Matimo](https://matimo.dev) - tool package manager & MCP server launcher.
21
+
22
+ [![PyPI](https://img.shields.io/pypi/v/matimo-cli)](https://pypi.org/project/matimo-cli/)
23
+ [![Docs](https://img.shields.io/badge/docs-matimo.dev-blue)](https://docs.matimo.dev)
24
+
25
+ ---
26
+
27
+ ## Installation
28
+
29
+ ```bash
30
+ pip install matimo-cli
31
+ # or with uv
32
+ uv add matimo-cli
33
+ ```
34
+
35
+ ---
36
+
37
+ ## Commands
38
+
39
+ ### `matimo install` - Install provider packages
40
+
41
+ ```bash
42
+ matimo install slack github gmail # install specific providers
43
+ ```
44
+
45
+ ### `matimo list` - List available tools
46
+
47
+ ```bash
48
+ matimo list # all loaded tools
49
+ ```
50
+
51
+ ### `matimo search` - Search for tools
52
+
53
+ ```bash
54
+ matimo search email # text search over tool names + descriptions
55
+ matimo search "send message"
56
+ ```
57
+
58
+ ### `matimo mcp` - Start MCP server
59
+
60
+ Serve all loaded tools over the [Model Context Protocol](https://docs.matimo.dev/MCP) so Claude Desktop, Cursor, or any MCP client can access them.
61
+
62
+ ```bash
63
+ matimo mcp # start on stdio (default)
64
+ matimo mcp --transport http --port 3000 # start as HTTP server
65
+ ```
66
+
67
+ **Claude Desktop `claude_desktop_config.json`:**
68
+ ```json
69
+ {
70
+ "mcpServers": {
71
+ "matimo": {
72
+ "command": "matimo",
73
+ "args": ["mcp"]
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ### `matimo doctor` - Diagnose your setup
80
+
81
+ ```bash
82
+ matimo doctor # check config, installed providers, connectivity
83
+ ```
84
+
85
+ ### `matimo review` - Review agent-created tool definitions
86
+
87
+ Operates on the current directory (or `$MATIMO_TOOL_DIR`), not an arbitrary path argument:
88
+
89
+ ```bash
90
+ matimo review list # list approved tools and HITL-pending ones
91
+ matimo review approve my_tool # approve a pending tool
92
+ matimo review reject my_tool # reject/revoke a tool
93
+ ```
94
+
95
+ `review` works on one directory that holds both the agent-created tools (`<dir>/<tool>/definition.yaml`) and the approval manifest (`<dir>/.matimo-approvals.json`): the current directory, or `MATIMO_TOOL_DIR`. For your app to see a CLI approval:
96
+
97
+ - set `approvalDir` (`approval_dir`) in the app to that same directory, and
98
+ - use the same `MATIMO_APPROVAL_SECRET` in the CLI and the app (`approve` refuses to run without it).
99
+
100
+ `approve` sets `status: approved` in the YAML and signs it; reload the app's tools afterwards. `list` shows the tools the manifest records as approved, and those held as pending by HITL quarantine on reload. Inside a running agent, `matimo_approve_tool` does the same job with the app's own manifest.
101
+
102
+ ---
103
+
104
+ ## Configuration
105
+
106
+ The CLI reads configuration entirely from environment variables - there is no
107
+ `.matimo.yaml` config file:
108
+
109
+ ```bash
110
+ export MATIMO_LOG_LEVEL=info # silent | error | warn | info | debug
111
+ export MATIMO_LOG_FORMAT=json # json | simple
112
+ export MATIMO_APPROVED_PATTERNS="get_*,list_*" # tools that never ask for approval
113
+ ```
114
+
115
+ ---
116
+
117
+ ## Documentation
118
+
119
+ - [CLI Guide](https://github.com/tallclub/matimo/blob/main/python/packages/cli/README.md)
120
+ - [MCP Guide](https://docs.matimo.dev/MCP)
121
+ - [Getting Started](https://docs.matimo.dev/getting-started/QUICK_START)
122
+
123
+ ---
124
+
125
+ ## Links
126
+
127
+ - **PyPI:** https://pypi.org/project/matimo-cli/
128
+ - **Docs:** https://docs.matimo.dev/
129
+ - **GitHub:** https://github.com/tallclub/matimo
130
+
@@ -0,0 +1,113 @@
1
+ # matimo-cli
2
+
3
+ > Command-line interface for [Matimo](https://matimo.dev) - tool package manager & MCP server launcher.
4
+
5
+ [![PyPI](https://img.shields.io/pypi/v/matimo-cli)](https://pypi.org/project/matimo-cli/)
6
+ [![Docs](https://img.shields.io/badge/docs-matimo.dev-blue)](https://docs.matimo.dev)
7
+
8
+ ---
9
+
10
+ ## Installation
11
+
12
+ ```bash
13
+ pip install matimo-cli
14
+ # or with uv
15
+ uv add matimo-cli
16
+ ```
17
+
18
+ ---
19
+
20
+ ## Commands
21
+
22
+ ### `matimo install` - Install provider packages
23
+
24
+ ```bash
25
+ matimo install slack github gmail # install specific providers
26
+ ```
27
+
28
+ ### `matimo list` - List available tools
29
+
30
+ ```bash
31
+ matimo list # all loaded tools
32
+ ```
33
+
34
+ ### `matimo search` - Search for tools
35
+
36
+ ```bash
37
+ matimo search email # text search over tool names + descriptions
38
+ matimo search "send message"
39
+ ```
40
+
41
+ ### `matimo mcp` - Start MCP server
42
+
43
+ Serve all loaded tools over the [Model Context Protocol](https://docs.matimo.dev/MCP) so Claude Desktop, Cursor, or any MCP client can access them.
44
+
45
+ ```bash
46
+ matimo mcp # start on stdio (default)
47
+ matimo mcp --transport http --port 3000 # start as HTTP server
48
+ ```
49
+
50
+ **Claude Desktop `claude_desktop_config.json`:**
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "matimo": {
55
+ "command": "matimo",
56
+ "args": ["mcp"]
57
+ }
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### `matimo doctor` - Diagnose your setup
63
+
64
+ ```bash
65
+ matimo doctor # check config, installed providers, connectivity
66
+ ```
67
+
68
+ ### `matimo review` - Review agent-created tool definitions
69
+
70
+ Operates on the current directory (or `$MATIMO_TOOL_DIR`), not an arbitrary path argument:
71
+
72
+ ```bash
73
+ matimo review list # list approved tools and HITL-pending ones
74
+ matimo review approve my_tool # approve a pending tool
75
+ matimo review reject my_tool # reject/revoke a tool
76
+ ```
77
+
78
+ `review` works on one directory that holds both the agent-created tools (`<dir>/<tool>/definition.yaml`) and the approval manifest (`<dir>/.matimo-approvals.json`): the current directory, or `MATIMO_TOOL_DIR`. For your app to see a CLI approval:
79
+
80
+ - set `approvalDir` (`approval_dir`) in the app to that same directory, and
81
+ - use the same `MATIMO_APPROVAL_SECRET` in the CLI and the app (`approve` refuses to run without it).
82
+
83
+ `approve` sets `status: approved` in the YAML and signs it; reload the app's tools afterwards. `list` shows the tools the manifest records as approved, and those held as pending by HITL quarantine on reload. Inside a running agent, `matimo_approve_tool` does the same job with the app's own manifest.
84
+
85
+ ---
86
+
87
+ ## Configuration
88
+
89
+ The CLI reads configuration entirely from environment variables - there is no
90
+ `.matimo.yaml` config file:
91
+
92
+ ```bash
93
+ export MATIMO_LOG_LEVEL=info # silent | error | warn | info | debug
94
+ export MATIMO_LOG_FORMAT=json # json | simple
95
+ export MATIMO_APPROVED_PATTERNS="get_*,list_*" # tools that never ask for approval
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Documentation
101
+
102
+ - [CLI Guide](https://github.com/tallclub/matimo/blob/main/python/packages/cli/README.md)
103
+ - [MCP Guide](https://docs.matimo.dev/MCP)
104
+ - [Getting Started](https://docs.matimo.dev/getting-started/QUICK_START)
105
+
106
+ ---
107
+
108
+ ## Links
109
+
110
+ - **PyPI:** https://pypi.org/project/matimo-cli/
111
+ - **Docs:** https://docs.matimo.dev/
112
+ - **GitHub:** https://github.com/tallclub/matimo
113
+
@@ -4,22 +4,22 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "matimo-cli"
7
- version = "0.1.2"
7
+ version = "0.2.0"
8
8
  description = "Matimo CLI — tool package manager & MCP server launcher"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  license = { text = "MIT" }
12
12
  authors = [{ name = "Matimo" }]
13
- keywords = ["matimo", "cli", "ai-tools", "mcp"]
13
+ keywords = ["matimo", "cli", "ai-tools", "mcp", "mcp-server", "ai-governance", "policy-engine"]
14
14
  classifiers = [
15
15
  "Development Status :: 3 - Alpha",
16
16
  "Programming Language :: Python :: 3",
17
17
  "License :: OSI Approved :: MIT License",
18
18
  ]
19
19
  dependencies = [
20
- "matimo-core[mcp]>=0.1.0a14.post1,<0.2.0",
20
+ "matimo-core[mcp]>=0.2.0,<0.3.0",
21
21
  "pyyaml>=6.0",
22
- "mcp>=1.0",
22
+ "mcp>=1.28.1",
23
23
  ]
24
24
 
25
25
  [project.scripts]
@@ -16,6 +16,8 @@ Usage::
16
16
  from __future__ import annotations
17
17
 
18
18
  import sys
19
+ from importlib.metadata import PackageNotFoundError
20
+ from importlib.metadata import version as _pkg_version
19
21
 
20
22
  from matimo_cli.commands.doctor import doctor_command
21
23
  from matimo_cli.commands.install import install_command
@@ -24,7 +26,10 @@ from matimo_cli.commands.mcp import mcp_command
24
26
  from matimo_cli.commands.review import review_command
25
27
  from matimo_cli.commands.search import search_command
26
28
 
27
- _VERSION = "0.1.0" # also update in setup.py and pyproject.toml
29
+ try:
30
+ _VERSION = _pkg_version("matimo-cli")
31
+ except PackageNotFoundError: # running from a source tree without install metadata
32
+ _VERSION = "unknown"
28
33
 
29
34
  _HELP = f"""\
30
35
  🔨 Matimo CLI — Tool Package Manager (v{_VERSION})
@@ -57,8 +62,17 @@ Documentation: https://github.com/tallclub/matimo#readme
57
62
  """
58
63
 
59
64
 
65
+ def _ensure_utf8_output() -> None:
66
+ """Avoid UnicodeEncodeError on consoles with a legacy code page (e.g. cp1252 on Windows)."""
67
+ for stream in (sys.stdout, sys.stderr):
68
+ reconfigure = getattr(stream, "reconfigure", None)
69
+ if reconfigure is not None:
70
+ reconfigure(encoding="utf-8", errors="replace")
71
+
72
+
60
73
  def main(cli_args: list[str] | None = None) -> None:
61
74
  """Main CLI handler — parses commands and routes to handlers."""
75
+ _ensure_utf8_output()
62
76
  args = cli_args if cli_args is not None else sys.argv[1:]
63
77
  command = args[0] if args else None
64
78
  params = args[1:] if args else []
@@ -13,7 +13,7 @@ def install_command(tool_names: list[str]) -> None:
13
13
  if not tool_names:
14
14
  print("❌ Error: Please specify at least one tool to install", file=sys.stderr)
15
15
  print("\nUsage: matimo install [tool1] [tool2] …")
16
- print("Example: matimo install slack gmail stripe")
16
+ print("Example: matimo install slack gmail github")
17
17
  sys.exit(1)
18
18
 
19
19
  packages = [f"matimo-{name}" for name in tool_names]
matimo_cli-0.1.2/PKG-INFO DELETED
@@ -1,132 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: matimo-cli
3
- Version: 0.1.2
4
- Summary: Matimo CLI — tool package manager & MCP server launcher
5
- Author: Matimo
6
- License: MIT
7
- Keywords: ai-tools,cli,matimo,mcp
8
- Classifier: Development Status :: 3 - Alpha
9
- Classifier: License :: OSI Approved :: MIT License
10
- Classifier: Programming Language :: Python :: 3
11
- Requires-Python: >=3.11
12
- Requires-Dist: matimo-core[mcp]<0.2.0,>=0.1.0a14.post1
13
- Requires-Dist: mcp>=1.0
14
- Requires-Dist: pyyaml>=6.0
15
- Description-Content-Type: text/markdown
16
-
17
- # matimo-cli
18
-
19
- > Command-line interface for [Matimo](https://matimo.dev) — tool package manager & MCP server launcher.
20
-
21
- [![PyPI](https://img.shields.io/pypi/v/matimo-cli)](https://pypi.org/project/matimo-cli/)
22
- [![Docs](https://img.shields.io/badge/docs-matimo.dev-blue)](https://matimo.dev/docs)
23
-
24
- ---
25
-
26
- ## Installation
27
-
28
- ```bash
29
- pip install matimo-cli
30
- # or with uv
31
- uv add matimo-cli
32
- ```
33
-
34
- ---
35
-
36
- ## Commands
37
-
38
- ### `matimo install` — Install provider packages
39
-
40
- ```bash
41
- matimo install slack github gmail # install specific providers
42
- matimo install slack --upgrade # upgrade an existing provider
43
- ```
44
-
45
- ### `matimo list` — List available tools
46
-
47
- ```bash
48
- matimo list # all loaded tools
49
- matimo list --provider slack # filter by provider
50
- matimo list --format json # JSON output
51
- ```
52
-
53
- ### `matimo search` — Search for tools
54
-
55
- ```bash
56
- matimo search email # text search over tool names + descriptions
57
- matimo search "send message"
58
- ```
59
-
60
- ### `matimo mcp` — Start MCP server
61
-
62
- Serve all loaded tools over the [Model Context Protocol](https://matimo.dev/docs/MCP) so Claude Desktop, Cursor, or any MCP client can access them.
63
-
64
- ```bash
65
- matimo mcp # start on stdio (default)
66
- matimo mcp --transport http --port 3000 # start as HTTP server
67
- matimo mcp --name "my-agent" # set server name
68
- ```
69
-
70
- **Claude Desktop `claude_desktop_config.json`:**
71
- ```json
72
- {
73
- "mcpServers": {
74
- "matimo": {
75
- "command": "matimo",
76
- "args": ["mcp"]
77
- }
78
- }
79
- }
80
- ```
81
-
82
- ### `matimo doctor` — Diagnose your setup
83
-
84
- ```bash
85
- matimo doctor # check config, installed providers, connectivity
86
- matimo doctor --fix # attempt auto-repair
87
- ```
88
-
89
- ### `matimo review` — Review agent-created tool definitions
90
-
91
- ```bash
92
- matimo review ./agent-tools/ # interactive review of draft tools
93
- ```
94
-
95
- ---
96
-
97
- ## Configuration
98
-
99
- The CLI reads Matimo configuration from the environment or a `.matimo.yaml` file in the project root:
100
-
101
- ```yaml
102
- # .matimo.yaml
103
- toolPaths:
104
- - ./tools
105
- - ./agent-tools
106
- logLevel: info
107
- ```
108
-
109
- Environment variables:
110
-
111
- ```bash
112
- export MATIMO_LOG_LEVEL=info # silent | error | warn | info | debug
113
- export MATIMO_LOG_FORMAT=json # json | simple
114
- export MATIMO_AUTO_APPROVE=true # auto-approve tool approval prompts (CI/CD)
115
- ```
116
-
117
- ---
118
-
119
- ## Documentation
120
-
121
- - [CLI Guide](https://matimo.dev/docs/user-guide/)
122
- - [MCP Guide](https://matimo.dev/docs/MCP)
123
- - [Getting Started](https://matimo.dev/docs/getting-started/QUICK_START)
124
-
125
- ---
126
-
127
- ## Links
128
-
129
- - **PyPI:** https://pypi.org/project/matimo-cli/
130
- - **Docs:** https://matimo.dev/docs
131
- - **GitHub:** https://github.com/tallclub/matimo
132
-
@@ -1,116 +0,0 @@
1
- # matimo-cli
2
-
3
- > Command-line interface for [Matimo](https://matimo.dev) — tool package manager & MCP server launcher.
4
-
5
- [![PyPI](https://img.shields.io/pypi/v/matimo-cli)](https://pypi.org/project/matimo-cli/)
6
- [![Docs](https://img.shields.io/badge/docs-matimo.dev-blue)](https://matimo.dev/docs)
7
-
8
- ---
9
-
10
- ## Installation
11
-
12
- ```bash
13
- pip install matimo-cli
14
- # or with uv
15
- uv add matimo-cli
16
- ```
17
-
18
- ---
19
-
20
- ## Commands
21
-
22
- ### `matimo install` — Install provider packages
23
-
24
- ```bash
25
- matimo install slack github gmail # install specific providers
26
- matimo install slack --upgrade # upgrade an existing provider
27
- ```
28
-
29
- ### `matimo list` — List available tools
30
-
31
- ```bash
32
- matimo list # all loaded tools
33
- matimo list --provider slack # filter by provider
34
- matimo list --format json # JSON output
35
- ```
36
-
37
- ### `matimo search` — Search for tools
38
-
39
- ```bash
40
- matimo search email # text search over tool names + descriptions
41
- matimo search "send message"
42
- ```
43
-
44
- ### `matimo mcp` — Start MCP server
45
-
46
- Serve all loaded tools over the [Model Context Protocol](https://matimo.dev/docs/MCP) so Claude Desktop, Cursor, or any MCP client can access them.
47
-
48
- ```bash
49
- matimo mcp # start on stdio (default)
50
- matimo mcp --transport http --port 3000 # start as HTTP server
51
- matimo mcp --name "my-agent" # set server name
52
- ```
53
-
54
- **Claude Desktop `claude_desktop_config.json`:**
55
- ```json
56
- {
57
- "mcpServers": {
58
- "matimo": {
59
- "command": "matimo",
60
- "args": ["mcp"]
61
- }
62
- }
63
- }
64
- ```
65
-
66
- ### `matimo doctor` — Diagnose your setup
67
-
68
- ```bash
69
- matimo doctor # check config, installed providers, connectivity
70
- matimo doctor --fix # attempt auto-repair
71
- ```
72
-
73
- ### `matimo review` — Review agent-created tool definitions
74
-
75
- ```bash
76
- matimo review ./agent-tools/ # interactive review of draft tools
77
- ```
78
-
79
- ---
80
-
81
- ## Configuration
82
-
83
- The CLI reads Matimo configuration from the environment or a `.matimo.yaml` file in the project root:
84
-
85
- ```yaml
86
- # .matimo.yaml
87
- toolPaths:
88
- - ./tools
89
- - ./agent-tools
90
- logLevel: info
91
- ```
92
-
93
- Environment variables:
94
-
95
- ```bash
96
- export MATIMO_LOG_LEVEL=info # silent | error | warn | info | debug
97
- export MATIMO_LOG_FORMAT=json # json | simple
98
- export MATIMO_AUTO_APPROVE=true # auto-approve tool approval prompts (CI/CD)
99
- ```
100
-
101
- ---
102
-
103
- ## Documentation
104
-
105
- - [CLI Guide](https://matimo.dev/docs/user-guide/)
106
- - [MCP Guide](https://matimo.dev/docs/MCP)
107
- - [Getting Started](https://matimo.dev/docs/getting-started/QUICK_START)
108
-
109
- ---
110
-
111
- ## Links
112
-
113
- - **PyPI:** https://pypi.org/project/matimo-cli/
114
- - **Docs:** https://matimo.dev/docs
115
- - **GitHub:** https://github.com/tallclub/matimo
116
-