matimo 0.1.3__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
matimo-0.2.0/LICENSE ADDED
@@ -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.
@@ -1,13 +1,14 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: matimo
3
- Version: 0.1.3
3
+ Version: 0.2.0
4
4
  Summary: Matimo — framework-agnostic SDK: pre-built providers, skills layer, MCP out of the box, and autonomous agents governed by a policy engine you control
5
5
  Project-URL: Homepage, https://matimo.dev
6
- Project-URL: Documentation, https://matimo.dev/docs
6
+ Project-URL: Documentation, https://docs.matimo.dev/
7
7
  Project-URL: Repository, https://github.com/tallclub/matimo
8
8
  Project-URL: Issues, https://github.com/tallclub/matimo/issues
9
9
  License: MIT
10
- Keywords: agentic-ai,agents,ai,ai-governance,crewai,langchain,matimo,mcp,mcp-server,policy-engine,tools
10
+ License-File: LICENSE
11
+ Keywords: agentic-ai,agents,agno,ai,ai-governance,crewai,langchain,matimo,mcp,mcp-server,policy-engine,tools
11
12
  Classifier: Development Status :: 4 - Beta
12
13
  Classifier: Intended Audience :: Developers
13
14
  Classifier: License :: OSI Approved :: MIT License
@@ -17,8 +18,10 @@ Classifier: Programming Language :: Python :: 3.12
17
18
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
19
  Classifier: Topic :: Software Development :: Libraries
19
20
  Requires-Python: >=3.11
20
- Requires-Dist: matimo-cli<0.2.0,>=0.1.0a14.post1
21
- Requires-Dist: matimo-core<0.2.0,>=0.1.0
21
+ Requires-Dist: matimo-cli<0.3.0,>=0.2.0
22
+ Requires-Dist: matimo-core<0.3.0,>=0.2.0
23
+ Provides-Extra: agno
24
+ Requires-Dist: matimo-core[agno]; extra == 'agno'
22
25
  Provides-Extra: all
23
26
  Requires-Dist: matimo-core[all]; extra == 'all'
24
27
  Provides-Extra: aws
@@ -41,7 +44,7 @@ Description-Content-Type: text/markdown
41
44
 
42
45
  [![PyPI](https://img.shields.io/pypi/v/matimo)](https://pypi.org/project/matimo/)
43
46
  [![Python](https://img.shields.io/pypi/pyversions/matimo)](https://pypi.org/project/matimo/)
44
- [![Docs](https://img.shields.io/badge/docs-matimo.dev-blue)](https://matimo.dev/docs)
47
+ [![Docs](https://img.shields.io/badge/docs-docs.matimo.dev-blue)](https://docs.matimo.dev)
45
48
 
46
49
  `matimo` is the convenience meta-package that installs [`matimo-core`](https://pypi.org/project/matimo-core/) and [`matimo-cli`](https://pypi.org/project/matimo-cli/). Provider packages (Slack, GitHub, Gmail, etc.) are installed separately.
47
50
 
@@ -56,6 +59,7 @@ pip install matimo
56
59
  # With optional framework integrations
57
60
  pip install "matimo[langchain]" # LangChain support
58
61
  pip install "matimo[crewai]" # CrewAI support
62
+ pip install "matimo[agno]" # Agno support
59
63
  pip install "matimo[mcp]" # MCP server support
60
64
 
61
65
  # With secrets backends
@@ -114,24 +118,16 @@ result = await matimo.execute('slack_send_channel_message', {
114
118
  ### LangChain agent
115
119
 
116
120
  ```python
117
- from matimo import Matimo
118
- from matimo.integrations.langchain import convert_tools_to_langchain
121
+ from matimo import Matimo, convert_tools_to_langchain
119
122
  from langchain_openai import ChatOpenAI
120
- from langchain.agents import AgentExecutor, create_tool_calling_agent
121
- from langchain_core.prompts import ChatPromptTemplate
123
+ from langchain.agents import create_agent # LangChain 1.x
122
124
 
123
125
  matimo = await Matimo.init(auto_discover=True)
124
- lc_tools = convert_tools_to_langchain(matimo.list_tools(), matimo)
125
-
126
- llm = ChatOpenAI(model='gpt-4o-mini')
127
- prompt = ChatPromptTemplate.from_messages([
128
- ('system', 'You are a helpful assistant.'),
129
- ('human', '{input}'),
130
- ('placeholder', '{agent_scratchpad}'),
131
- ])
132
- agent = create_tool_calling_agent(llm, lc_tools, prompt)
133
- executor = AgentExecutor(agent=agent, tools=lc_tools)
134
- result = await executor.ainvoke({'input': 'List all Slack channels'})
126
+ slack = [t for t in matimo.list_tools() if t.name.startswith('slack')]
127
+ lc_tools = convert_tools_to_langchain(slack, matimo) # pass a short list: OpenAI accepts at most 128 tools
128
+
129
+ agent = create_agent(ChatOpenAI(model='gpt-4o-mini'), tools=lc_tools)
130
+ result = await agent.ainvoke({'messages': [('user', 'List all Slack channels')]})
135
131
  ```
136
132
 
137
133
  ### CrewAI agent
@@ -147,13 +143,28 @@ crewai_tools = convert_tools_to_crewai(matimo.list_tools(), matimo)
147
143
  ### MCP server (Claude Desktop / Cursor)
148
144
 
149
145
  ```python
150
- from matimo import Matimo, create_mcp_server, MCPServerOptions
146
+ from matimo import Matimo, MCPServer, MCPServerOptions
151
147
 
152
148
  matimo = await Matimo.init(auto_discover=True)
153
- server = await create_mcp_server(matimo, MCPServerOptions(name='my-agent', version='1.0.0'))
149
+ server = MCPServer(matimo, MCPServerOptions(transport='stdio'))
154
150
  await server.start()
155
151
  ```
156
152
 
153
+ Or from the shell: `matimo mcp`.
154
+
155
+ ### Approval
156
+
157
+ Calls that need approval (HTTP DELETE, shell commands, tools marked `requires_approval`) ask your callback:
158
+
159
+ ```python
160
+ from matimo import ApprovalRequest, Matimo
161
+
162
+ async def confirm(request: ApprovalRequest) -> bool:
163
+ return input(f"Allow {request.tool_name}? [y/N] ").strip().lower() == "y"
164
+
165
+ matimo = await Matimo.init(auto_discover=True, on_approval=confirm)
166
+ ```
167
+
157
168
  ---
158
169
 
159
170
  ## Provider Packages
@@ -179,8 +190,8 @@ Install the tools you need:
179
190
 
180
191
  - **YAML-defined tools** - define once, use from any framework
181
192
  - **10 provider packages** - 100+ pre-built tools ready to use
182
- - **LangChain / CrewAI / MCP** - first-class integrations
183
- - **Policy engine** - risk classification, HITL approvals, content validation
193
+ - **LangChain / CrewAI / Agno / MCP** - first-class integrations
194
+ - **Policy engine** - risk classification, per-call approval, HITL quarantine, content validation, hash-chained audit log
184
195
  - **Skills system** - inject reusable domain knowledge into agents
185
196
  - **Meta-tools** - agents can create, approve, and reload tools at runtime
186
197
  - **Secrets management** - env, `.env`, Vault, AWS Secrets Manager resolver chain
@@ -190,19 +201,19 @@ Install the tools you need:
190
201
 
191
202
  ## Documentation
192
203
 
193
- - [Getting Started](https://matimo.dev/docs/getting-started/QUICK_START)
194
- - [API Reference](https://matimo.dev/docs/api-reference/SDK)
195
- - [LangChain Integration](https://matimo.dev/docs/framework-integrations/LANGCHAIN)
196
- - [CrewAI Integration](https://matimo.dev/docs/framework-integrations/CREWAI)
197
- - [MCP Guide](https://matimo.dev/docs/MCP)
198
- - [Policy & Lifecycle](https://matimo.dev/docs/api-reference/POLICY_AND_LIFECYCLE)
204
+ - [Getting Started](https://docs.matimo.dev/getting-started/QUICK_START)
205
+ - [API Reference](https://docs.matimo.dev/api-reference/SDK)
206
+ - [LangChain Integration](https://docs.matimo.dev/framework-integrations/LANGCHAIN)
207
+ - [CrewAI Integration](https://docs.matimo.dev/framework-integrations/CREWAI)
208
+ - [MCP Guide](https://docs.matimo.dev/MCP)
209
+ - [Policy & Lifecycle](https://docs.matimo.dev/api-reference/POLICY_AND_LIFECYCLE)
199
210
 
200
211
  ---
201
212
 
202
213
  ## Links
203
214
 
204
215
  - **PyPI:** https://pypi.org/project/matimo/
205
- - **Docs:** https://matimo.dev/docs
216
+ - **Docs:** https://docs.matimo.dev
206
217
  - **GitHub:** https://github.com/tallclub/matimo
207
218
  - **Changelog:** https://github.com/tallclub/matimo/blob/main/docs/RELEASES.md
208
219
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![PyPI](https://img.shields.io/pypi/v/matimo)](https://pypi.org/project/matimo/)
6
6
  [![Python](https://img.shields.io/pypi/pyversions/matimo)](https://pypi.org/project/matimo/)
7
- [![Docs](https://img.shields.io/badge/docs-matimo.dev-blue)](https://matimo.dev/docs)
7
+ [![Docs](https://img.shields.io/badge/docs-docs.matimo.dev-blue)](https://docs.matimo.dev)
8
8
 
9
9
  `matimo` is the convenience meta-package that installs [`matimo-core`](https://pypi.org/project/matimo-core/) and [`matimo-cli`](https://pypi.org/project/matimo-cli/). Provider packages (Slack, GitHub, Gmail, etc.) are installed separately.
10
10
 
@@ -19,6 +19,7 @@ pip install matimo
19
19
  # With optional framework integrations
20
20
  pip install "matimo[langchain]" # LangChain support
21
21
  pip install "matimo[crewai]" # CrewAI support
22
+ pip install "matimo[agno]" # Agno support
22
23
  pip install "matimo[mcp]" # MCP server support
23
24
 
24
25
  # With secrets backends
@@ -77,24 +78,16 @@ result = await matimo.execute('slack_send_channel_message', {
77
78
  ### LangChain agent
78
79
 
79
80
  ```python
80
- from matimo import Matimo
81
- from matimo.integrations.langchain import convert_tools_to_langchain
81
+ from matimo import Matimo, convert_tools_to_langchain
82
82
  from langchain_openai import ChatOpenAI
83
- from langchain.agents import AgentExecutor, create_tool_calling_agent
84
- from langchain_core.prompts import ChatPromptTemplate
83
+ from langchain.agents import create_agent # LangChain 1.x
85
84
 
86
85
  matimo = await Matimo.init(auto_discover=True)
87
- lc_tools = convert_tools_to_langchain(matimo.list_tools(), matimo)
88
-
89
- llm = ChatOpenAI(model='gpt-4o-mini')
90
- prompt = ChatPromptTemplate.from_messages([
91
- ('system', 'You are a helpful assistant.'),
92
- ('human', '{input}'),
93
- ('placeholder', '{agent_scratchpad}'),
94
- ])
95
- agent = create_tool_calling_agent(llm, lc_tools, prompt)
96
- executor = AgentExecutor(agent=agent, tools=lc_tools)
97
- result = await executor.ainvoke({'input': 'List all Slack channels'})
86
+ slack = [t for t in matimo.list_tools() if t.name.startswith('slack')]
87
+ lc_tools = convert_tools_to_langchain(slack, matimo) # pass a short list: OpenAI accepts at most 128 tools
88
+
89
+ agent = create_agent(ChatOpenAI(model='gpt-4o-mini'), tools=lc_tools)
90
+ result = await agent.ainvoke({'messages': [('user', 'List all Slack channels')]})
98
91
  ```
99
92
 
100
93
  ### CrewAI agent
@@ -110,13 +103,28 @@ crewai_tools = convert_tools_to_crewai(matimo.list_tools(), matimo)
110
103
  ### MCP server (Claude Desktop / Cursor)
111
104
 
112
105
  ```python
113
- from matimo import Matimo, create_mcp_server, MCPServerOptions
106
+ from matimo import Matimo, MCPServer, MCPServerOptions
114
107
 
115
108
  matimo = await Matimo.init(auto_discover=True)
116
- server = await create_mcp_server(matimo, MCPServerOptions(name='my-agent', version='1.0.0'))
109
+ server = MCPServer(matimo, MCPServerOptions(transport='stdio'))
117
110
  await server.start()
118
111
  ```
119
112
 
113
+ Or from the shell: `matimo mcp`.
114
+
115
+ ### Approval
116
+
117
+ Calls that need approval (HTTP DELETE, shell commands, tools marked `requires_approval`) ask your callback:
118
+
119
+ ```python
120
+ from matimo import ApprovalRequest, Matimo
121
+
122
+ async def confirm(request: ApprovalRequest) -> bool:
123
+ return input(f"Allow {request.tool_name}? [y/N] ").strip().lower() == "y"
124
+
125
+ matimo = await Matimo.init(auto_discover=True, on_approval=confirm)
126
+ ```
127
+
120
128
  ---
121
129
 
122
130
  ## Provider Packages
@@ -142,8 +150,8 @@ Install the tools you need:
142
150
 
143
151
  - **YAML-defined tools** - define once, use from any framework
144
152
  - **10 provider packages** - 100+ pre-built tools ready to use
145
- - **LangChain / CrewAI / MCP** - first-class integrations
146
- - **Policy engine** - risk classification, HITL approvals, content validation
153
+ - **LangChain / CrewAI / Agno / MCP** - first-class integrations
154
+ - **Policy engine** - risk classification, per-call approval, HITL quarantine, content validation, hash-chained audit log
147
155
  - **Skills system** - inject reusable domain knowledge into agents
148
156
  - **Meta-tools** - agents can create, approve, and reload tools at runtime
149
157
  - **Secrets management** - env, `.env`, Vault, AWS Secrets Manager resolver chain
@@ -153,19 +161,19 @@ Install the tools you need:
153
161
 
154
162
  ## Documentation
155
163
 
156
- - [Getting Started](https://matimo.dev/docs/getting-started/QUICK_START)
157
- - [API Reference](https://matimo.dev/docs/api-reference/SDK)
158
- - [LangChain Integration](https://matimo.dev/docs/framework-integrations/LANGCHAIN)
159
- - [CrewAI Integration](https://matimo.dev/docs/framework-integrations/CREWAI)
160
- - [MCP Guide](https://matimo.dev/docs/MCP)
161
- - [Policy & Lifecycle](https://matimo.dev/docs/api-reference/POLICY_AND_LIFECYCLE)
164
+ - [Getting Started](https://docs.matimo.dev/getting-started/QUICK_START)
165
+ - [API Reference](https://docs.matimo.dev/api-reference/SDK)
166
+ - [LangChain Integration](https://docs.matimo.dev/framework-integrations/LANGCHAIN)
167
+ - [CrewAI Integration](https://docs.matimo.dev/framework-integrations/CREWAI)
168
+ - [MCP Guide](https://docs.matimo.dev/MCP)
169
+ - [Policy & Lifecycle](https://docs.matimo.dev/api-reference/POLICY_AND_LIFECYCLE)
162
170
 
163
171
  ---
164
172
 
165
173
  ## Links
166
174
 
167
175
  - **PyPI:** https://pypi.org/project/matimo/
168
- - **Docs:** https://matimo.dev/docs
176
+ - **Docs:** https://docs.matimo.dev
169
177
  - **GitHub:** https://github.com/tallclub/matimo
170
178
  - **Changelog:** https://github.com/tallclub/matimo/blob/main/docs/RELEASES.md
171
179
 
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "matimo"
7
- version = "0.1.3"
7
+ version = "0.2.0"
8
8
  description = "Matimo — framework-agnostic SDK: pre-built providers, skills layer, MCP out of the box, and autonomous agents governed by a policy engine you control"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
11
11
  requires-python = ">=3.11"
12
- keywords = ["ai", "tools", "agents", "langchain", "crewai", "mcp", "matimo", "mcp-server", "agentic-ai", "ai-governance", "policy-engine"]
12
+ keywords = ["ai", "tools", "agents", "langchain", "crewai", "agno", "mcp", "matimo", "mcp-server", "agentic-ai", "ai-governance", "policy-engine"]
13
13
  classifiers = [
14
14
  "Development Status :: 4 - Beta",
15
15
  "Intended Audience :: Developers",
@@ -23,13 +23,14 @@ classifiers = [
23
23
  # This is a meta-package: pip install matimo pulls in matimo-core and matimo-cli
24
24
  # which provides the actual `matimo` Python namespace and CLI tools.
25
25
  dependencies = [
26
- "matimo-core>=0.1.0,<0.2.0",
27
- "matimo-cli>=0.1.0a14.post1,<0.2.0",
26
+ "matimo-core>=0.2.0,<0.3.0",
27
+ "matimo-cli>=0.2.0,<0.3.0",
28
28
  ]
29
29
 
30
30
  [project.optional-dependencies]
31
31
  langchain = ["matimo-core[langchain]"]
32
32
  crewai = ["matimo-core[crewai]"]
33
+ agno = ["matimo-core[agno]"]
33
34
  mcp = ["matimo-core[mcp]"]
34
35
  dotenv = ["matimo-core[dotenv]"]
35
36
  vault = ["matimo-core[vault]"]
@@ -38,7 +39,7 @@ all = ["matimo-core[all]"]
38
39
 
39
40
  [project.urls]
40
41
  Homepage = "https://matimo.dev"
41
- Documentation = "https://matimo.dev/docs"
42
+ Documentation = "https://docs.matimo.dev/"
42
43
  Repository = "https://github.com/tallclub/matimo"
43
44
  Issues = "https://github.com/tallclub/matimo/issues"
44
45
 
@@ -28,7 +28,7 @@ try:
28
28
  from importlib.metadata import version as _pkg_version
29
29
  __version__ = _pkg_version("matimo")
30
30
  except Exception:
31
- __version__ = "0.1.1.post1" # fallback for editable / source installs
31
+ __version__ = "0.2.0" # fallback for editable / source installs
32
32
 
33
33
  # ---------------------------------------------------------------------------
34
34
  # matimo-core re-exports
@@ -41,6 +41,7 @@ from matimo.approval.handler import ( # noqa: E402
41
41
  ApprovalCallback,
42
42
  ApprovalHandler,
43
43
  ApprovalRequest,
44
+ definition_requires_approval,
44
45
  get_global_approval_handler,
45
46
  set_global_approval_handler,
46
47
  )
@@ -129,7 +130,7 @@ from matimo.errors import ( # noqa: E402
129
130
 
130
131
  # Executors
131
132
  from matimo.executors.command_executor import CommandExecutor # noqa: E402
132
- from matimo.executors.function_executor import FunctionExecutor # noqa: E402
133
+ from matimo.executors.function_executor import FunctionExecutor, FunctionToolContext # noqa: E402
133
134
  from matimo.executors.http_executor import HttpExecutor # noqa: E402
134
135
 
135
136
  # Main entry point + sync API
@@ -157,12 +158,26 @@ from matimo.mcp.tool_converter import convert_parameters_to_mcp_schema # noqa:
157
158
 
158
159
  # Policy
159
160
  from matimo.policy.approval_manifest import ApprovalManifest, ApprovalRecord # noqa: E402
161
+ from matimo.policy.audit_sink import ( # noqa: E402
162
+ AUDIT_GENESIS_HASH,
163
+ AuditLogVerification,
164
+ AuditSink,
165
+ JsonlFileSink,
166
+ hash_audit_entry,
167
+ redact_secrets,
168
+ verify_audit_log,
169
+ )
160
170
  from matimo.policy.content_validator import ContentViolation, validate_tool_content # noqa: E402
161
171
  from matimo.policy.default_policy import DefaultPolicyEngine, PolicyEngine, get_tier_for_tool # noqa: E402
162
172
  from matimo.policy.integrity_tracker import IntegrityAction, ToolIntegrityTracker # noqa: E402
163
173
  from matimo.policy.policy_loader import load_policy_from_file # noqa: E402
164
- from matimo.policy.risk_classifier import classify_risk # noqa: E402
174
+ from matimo.policy.risk_classifier import ( # noqa: E402
175
+ classify_execution_risk,
176
+ classify_risk,
177
+ meets_risk_threshold,
178
+ )
165
179
  from matimo.policy.types import ( # noqa: E402
180
+ GovernanceMode,
166
181
  HITLCallback,
167
182
  HITLRequest,
168
183
  MatimoEvent,
@@ -223,6 +238,30 @@ def convert_tools_to_crewai(
223
238
  return _inner(tools, matimo_instance, credentials)
224
239
 
225
240
 
241
+ def convert_tools_to_agno(
242
+ tools: list[ToolDefinition],
243
+ matimo_instance: Matimo,
244
+ credentials: dict[str, str] | None = None,
245
+ **kwargs: object,
246
+ ) -> list[object]:
247
+ """Convert Matimo tools to Agno Function list. Requires agno."""
248
+ from matimo.integrations.agno import convert_tools_to_agno as _inner
249
+ return _inner(tools, matimo_instance, credentials, **kwargs) # type: ignore[arg-type]
250
+
251
+
252
+ def MatimoTools( # noqa: N802
253
+ matimo_instance: Matimo,
254
+ tools: list[ToolDefinition] | None = None,
255
+ **kwargs: object,
256
+ ) -> object:
257
+ """Build an Agno Toolkit exposing governed Matimo tools. Requires agno.
258
+
259
+ Named in CapWords to match Agno's <Name>Tools toolkit convention.
260
+ """
261
+ from matimo.integrations.agno import MatimoTools as _inner
262
+ return _inner(matimo_instance, tools, **kwargs) # type: ignore[arg-type]
263
+
264
+
226
265
  def get_core_tools_path() -> str:
227
266
  """Return the absolute path to matimo-core's bundled tool definitions.
228
267
 
@@ -277,7 +316,7 @@ __all__ = [
277
316
  "ParsedSkillContent", "SemanticSearchResult",
278
317
  "TfIdfEmbeddingProvider", "EmbeddingProvider", "cosine_similarity",
279
318
  # Executors
280
- "HttpExecutor", "CommandExecutor", "FunctionExecutor",
319
+ "HttpExecutor", "CommandExecutor", "FunctionExecutor", "FunctionToolContext",
281
320
  # Auth
282
321
  "inject_auth_parameters", "extract_parameter_placeholders",
283
322
  "OAuth2Handler", "OAuth2ProviderLoader",
@@ -285,15 +324,19 @@ __all__ = [
285
324
  # Approval
286
325
  "ApprovalHandler", "ApprovalRequest", "ApprovalCallback",
287
326
  "get_global_approval_handler", "set_global_approval_handler",
327
+ "definition_requires_approval",
288
328
  # Encodings
289
329
  "apply_parameter_encodings",
290
330
  # Policy
291
331
  "PolicyEngine", "DefaultPolicyEngine", "PolicyConfig",
292
332
  "PolicyDecision", "PolicyAllowed", "PolicyDenied", "PolicyPendingApproval",
293
- "RiskLevel", "PolicyTier", "MatimoEvent", "MatimoEventHandler",
333
+ "RiskLevel", "PolicyTier", "MatimoEvent", "MatimoEventHandler", "GovernanceMode",
294
334
  "HITLCallback", "HITLRequest", "ContentViolation", "validate_tool_content",
295
- "classify_risk", "get_tier_for_tool", "ToolIntegrityTracker", "IntegrityAction",
335
+ "classify_risk", "classify_execution_risk", "meets_risk_threshold",
336
+ "get_tier_for_tool", "ToolIntegrityTracker", "IntegrityAction",
296
337
  "ApprovalManifest", "ApprovalRecord", "load_policy_from_file",
338
+ "AuditSink", "JsonlFileSink", "AuditLogVerification", "verify_audit_log",
339
+ "redact_secrets", "hash_audit_entry", "AUDIT_GENESIS_HASH",
297
340
  # MCP
298
341
  "MCPServer", "MCPServerOptions", "create_mcp_server",
299
342
  "convert_parameters_to_mcp_schema",
@@ -303,6 +346,7 @@ __all__ = [
303
346
  # Integrations
304
347
  "convert_tools_to_langchain", "get_skills_metadata",
305
348
  "build_relevant_skill_prompt", "convert_tools_to_crewai",
349
+ "convert_tools_to_agno", "MatimoTools",
306
350
  # Decorators
307
351
  "tool", "set_global_matimo_instance", "get_global_matimo_instance",
308
352
  # Logging