agent-firewall-security 1.0.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.
Files changed (40) hide show
  1. agent_firewall_security-1.0.0/PKG-INFO +170 -0
  2. agent_firewall_security-1.0.0/README.md +154 -0
  3. agent_firewall_security-1.0.0/agent_firewall_security.egg-info/PKG-INFO +170 -0
  4. agent_firewall_security-1.0.0/agent_firewall_security.egg-info/SOURCES.txt +38 -0
  5. agent_firewall_security-1.0.0/agent_firewall_security.egg-info/dependency_links.txt +1 -0
  6. agent_firewall_security-1.0.0/agent_firewall_security.egg-info/entry_points.txt +2 -0
  7. agent_firewall_security-1.0.0/agent_firewall_security.egg-info/requires.txt +7 -0
  8. agent_firewall_security-1.0.0/agent_firewall_security.egg-info/top_level.txt +1 -0
  9. agent_firewall_security-1.0.0/firewall/__init__.py +80 -0
  10. agent_firewall_security-1.0.0/firewall/adapters/__init__.py +30 -0
  11. agent_firewall_security-1.0.0/firewall/adapters/anthropic.py +324 -0
  12. agent_firewall_security-1.0.0/firewall/adapters/generic.py +237 -0
  13. agent_firewall_security-1.0.0/firewall/adapters/normalize.py +108 -0
  14. agent_firewall_security-1.0.0/firewall/adapters/openai.py +363 -0
  15. agent_firewall_security-1.0.0/firewall/attenuation.py +194 -0
  16. agent_firewall_security-1.0.0/firewall/authorization.py +236 -0
  17. agent_firewall_security-1.0.0/firewall/capability.py +287 -0
  18. agent_firewall_security-1.0.0/firewall/cli.py +359 -0
  19. agent_firewall_security-1.0.0/firewall/delegation.py +252 -0
  20. agent_firewall_security-1.0.0/firewall/engine.py +2017 -0
  21. agent_firewall_security-1.0.0/firewall/evidence.py +259 -0
  22. agent_firewall_security-1.0.0/firewall/explain.py +165 -0
  23. agent_firewall_security-1.0.0/firewall/http.py +478 -0
  24. agent_firewall_security-1.0.0/firewall/identity.py +508 -0
  25. agent_firewall_security-1.0.0/firewall/key_management.py +577 -0
  26. agent_firewall_security-1.0.0/firewall/key_store.py +755 -0
  27. agent_firewall_security-1.0.0/firewall/lifecycle.py +244 -0
  28. agent_firewall_security-1.0.0/firewall/lifecycle_store.py +599 -0
  29. agent_firewall_security-1.0.0/firewall/mcp.py +245 -0
  30. agent_firewall_security-1.0.0/firewall/namespace.py +190 -0
  31. agent_firewall_security-1.0.0/firewall/protect.py +72 -0
  32. agent_firewall_security-1.0.0/firewall/replay.py +160 -0
  33. agent_firewall_security-1.0.0/firewall/revocation.py +378 -0
  34. agent_firewall_security-1.0.0/firewall/revocation_store.py +288 -0
  35. agent_firewall_security-1.0.0/firewall/sdk.py +1206 -0
  36. agent_firewall_security-1.0.0/firewall/tools.py +177 -0
  37. agent_firewall_security-1.0.0/firewall/transport.py +222 -0
  38. agent_firewall_security-1.0.0/pyproject.toml +33 -0
  39. agent_firewall_security-1.0.0/setup.cfg +4 -0
  40. agent_firewall_security-1.0.0/tests/test_engine.py +257 -0
@@ -0,0 +1,170 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-firewall-security
3
+ Version: 1.0.0
4
+ Summary: Security and authorization layer for AI agents and automated tool use.
5
+ Project-URL: Homepage, https://github.com/Shubhbhangoo/agent-firewall
6
+ Project-URL: Repository, https://github.com/Shubhbhangoo/agent-firewall
7
+ Project-URL: Issues, https://github.com/Shubhbhangoo/agent-firewall/issues
8
+ Requires-Python: >=3.10
9
+ Description-Content-Type: text/markdown
10
+ Requires-Dist: PyYAML>=6.0
11
+ Requires-Dist: mcp>=2.0
12
+ Requires-Dist: cryptography>=41.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: pytest>=9.0; extra == "dev"
15
+ Requires-Dist: hypothesis>=6.0; extra == "dev"
16
+
17
+ Agent Firewall
18
+
19
+ Security and authorization infrastructure for AI agents and automated tool use.
20
+
21
+ Agent Firewall provides a capability-based security layer between agents and the actions they are allowed to perform.
22
+
23
+ ## v1.0
24
+
25
+ Agent Firewall v1.0 is the first stable release.
26
+
27
+ ### Core security
28
+
29
+ - Capability-based authorization
30
+ - Cryptographic capability verification
31
+ - Capability attenuation
32
+ - Capability delegation
33
+ - Capability revocation
34
+ - Replay protection
35
+ - Lifecycle recording
36
+ - Expiration enforcement
37
+ - Issuer trust management
38
+ - Signing-key rotation
39
+ - Key retirement
40
+ - Fail-closed authorization semantics
41
+
42
+ ### Persistent security state
43
+
44
+ v1.0 supports persistent managed signing keys and issuer trust state.
45
+
46
+ ```python
47
+ import os
48
+
49
+ from firewall.sdk import FirewallSDK
50
+
51
+ master_key = os.urandom(32)
52
+
53
+ sdk = FirewallSDK(
54
+ key_store_path="firewall-keys.db",
55
+ master_key=master_key,
56
+ )
57
+
58
+ sdk.generate_key("key-1")
59
+
60
+ capability = sdk.issue(
61
+ agent="agent-a",
62
+ capability="payments.send",
63
+ )
64
+
65
+ Private signing keys are encrypted at rest.
66
+
67
+ The master key is supplied by the application and is never stored by Agent Firewall.
68
+
69
+ Key rotation
70
+ sdk.rotate_key("key-2")
71
+
72
+ Rotation creates a new active signing key and retires the previous one.
73
+
74
+ Previously issued capabilities are not automatically revoked.
75
+
76
+ Issuer trust
77
+ sdk.trust_issuer("issuer-a")
78
+ sdk.revoke_issuer("issuer-a")
79
+
80
+ Issuer trust state can survive SDK restart when persistent key storage is enabled.
81
+
82
+ Legacy issuance
83
+
84
+ The existing direct-key API remains supported:
85
+
86
+ sdk.issue(
87
+ private_key=private_key,
88
+ agent="agent-a",
89
+ capability="payments.send",
90
+ )
91
+ CLI
92
+ firewall init
93
+ firewall validate
94
+ firewall inspect-token
95
+ firewall explain
96
+ Security testing
97
+
98
+ The project includes:
99
+
100
+ unit tests
101
+ integration tests
102
+ property-based tests
103
+ state-machine tests
104
+ persistence failure tests
105
+ adapter interoperability tests
106
+ benchmark coverage
107
+
108
+ The CI security matrix runs the complete test suite on Python 3.10, 3.11, and 3.12.
109
+
110
+ Installation
111
+ pip install agent-firewall
112
+ Documentation
113
+
114
+ See:
115
+
116
+ docs/v1.0-api-contract.md
117
+ docs/v1.0-security.md
118
+ docs/v1.0-key-management.md
119
+
120
+ ### `CHANGELOG.md`
121
+
122
+ Create or update:
123
+
124
+ ```md
125
+ # Changelog
126
+
127
+ All notable changes to Agent Firewall are documented here.
128
+
129
+ ## [1.0.0] - 2026-08-23
130
+
131
+ ### Added
132
+
133
+ - Stable v1.0 public API contract
134
+ - Managed capability signing keys
135
+ - Signing-key rotation
136
+ - Signing-key retirement
137
+ - Persistent encrypted signing-key storage
138
+ - Persistent issuer trust state
139
+ - Issuer trust and revocation management
140
+ - Persistent lifecycle and revocation support
141
+ - Generic tool adapter
142
+ - OpenAI tool adapter
143
+ - Anthropic tool adapter
144
+ - Capability normalization
145
+ - Capability explanation and denial reporting
146
+ - CLI commands:
147
+ - `firewall init`
148
+ - `firewall validate`
149
+ - `firewall inspect-token`
150
+ - `firewall explain`
151
+ - Property-based security tests
152
+ - Lifecycle state-machine security tests
153
+ - Persistence failure and corruption tests
154
+ - CI security regression matrix
155
+ - Python 3.10, 3.11, and 3.12 CI coverage
156
+ - v1.0 security and key-management documentation
157
+
158
+ ### Security
159
+
160
+ - Authorization fails closed when critical security state cannot be verified.
161
+ - Persistent key-store failures do not silently fall back to cached or newly generated signing authority.
162
+ - Retiring or rotating a key does not implicitly grant or revoke capability authority.
163
+ - Revoked, expired, replayed, and denied capabilities cannot transition into successful use.
164
+ - Private signing-key material is encrypted at rest in persistent storage.
165
+
166
+ ### Compatibility
167
+
168
+ - Existing direct `private_key=` capability issuance remains supported.
169
+ - v0.9 CLI commands remain available.
170
+ - Existing adapter security semantics continue to use the same authorization core.
@@ -0,0 +1,154 @@
1
+ Agent Firewall
2
+
3
+ Security and authorization infrastructure for AI agents and automated tool use.
4
+
5
+ Agent Firewall provides a capability-based security layer between agents and the actions they are allowed to perform.
6
+
7
+ ## v1.0
8
+
9
+ Agent Firewall v1.0 is the first stable release.
10
+
11
+ ### Core security
12
+
13
+ - Capability-based authorization
14
+ - Cryptographic capability verification
15
+ - Capability attenuation
16
+ - Capability delegation
17
+ - Capability revocation
18
+ - Replay protection
19
+ - Lifecycle recording
20
+ - Expiration enforcement
21
+ - Issuer trust management
22
+ - Signing-key rotation
23
+ - Key retirement
24
+ - Fail-closed authorization semantics
25
+
26
+ ### Persistent security state
27
+
28
+ v1.0 supports persistent managed signing keys and issuer trust state.
29
+
30
+ ```python
31
+ import os
32
+
33
+ from firewall.sdk import FirewallSDK
34
+
35
+ master_key = os.urandom(32)
36
+
37
+ sdk = FirewallSDK(
38
+ key_store_path="firewall-keys.db",
39
+ master_key=master_key,
40
+ )
41
+
42
+ sdk.generate_key("key-1")
43
+
44
+ capability = sdk.issue(
45
+ agent="agent-a",
46
+ capability="payments.send",
47
+ )
48
+
49
+ Private signing keys are encrypted at rest.
50
+
51
+ The master key is supplied by the application and is never stored by Agent Firewall.
52
+
53
+ Key rotation
54
+ sdk.rotate_key("key-2")
55
+
56
+ Rotation creates a new active signing key and retires the previous one.
57
+
58
+ Previously issued capabilities are not automatically revoked.
59
+
60
+ Issuer trust
61
+ sdk.trust_issuer("issuer-a")
62
+ sdk.revoke_issuer("issuer-a")
63
+
64
+ Issuer trust state can survive SDK restart when persistent key storage is enabled.
65
+
66
+ Legacy issuance
67
+
68
+ The existing direct-key API remains supported:
69
+
70
+ sdk.issue(
71
+ private_key=private_key,
72
+ agent="agent-a",
73
+ capability="payments.send",
74
+ )
75
+ CLI
76
+ firewall init
77
+ firewall validate
78
+ firewall inspect-token
79
+ firewall explain
80
+ Security testing
81
+
82
+ The project includes:
83
+
84
+ unit tests
85
+ integration tests
86
+ property-based tests
87
+ state-machine tests
88
+ persistence failure tests
89
+ adapter interoperability tests
90
+ benchmark coverage
91
+
92
+ The CI security matrix runs the complete test suite on Python 3.10, 3.11, and 3.12.
93
+
94
+ Installation
95
+ pip install agent-firewall
96
+ Documentation
97
+
98
+ See:
99
+
100
+ docs/v1.0-api-contract.md
101
+ docs/v1.0-security.md
102
+ docs/v1.0-key-management.md
103
+
104
+ ### `CHANGELOG.md`
105
+
106
+ Create or update:
107
+
108
+ ```md
109
+ # Changelog
110
+
111
+ All notable changes to Agent Firewall are documented here.
112
+
113
+ ## [1.0.0] - 2026-08-23
114
+
115
+ ### Added
116
+
117
+ - Stable v1.0 public API contract
118
+ - Managed capability signing keys
119
+ - Signing-key rotation
120
+ - Signing-key retirement
121
+ - Persistent encrypted signing-key storage
122
+ - Persistent issuer trust state
123
+ - Issuer trust and revocation management
124
+ - Persistent lifecycle and revocation support
125
+ - Generic tool adapter
126
+ - OpenAI tool adapter
127
+ - Anthropic tool adapter
128
+ - Capability normalization
129
+ - Capability explanation and denial reporting
130
+ - CLI commands:
131
+ - `firewall init`
132
+ - `firewall validate`
133
+ - `firewall inspect-token`
134
+ - `firewall explain`
135
+ - Property-based security tests
136
+ - Lifecycle state-machine security tests
137
+ - Persistence failure and corruption tests
138
+ - CI security regression matrix
139
+ - Python 3.10, 3.11, and 3.12 CI coverage
140
+ - v1.0 security and key-management documentation
141
+
142
+ ### Security
143
+
144
+ - Authorization fails closed when critical security state cannot be verified.
145
+ - Persistent key-store failures do not silently fall back to cached or newly generated signing authority.
146
+ - Retiring or rotating a key does not implicitly grant or revoke capability authority.
147
+ - Revoked, expired, replayed, and denied capabilities cannot transition into successful use.
148
+ - Private signing-key material is encrypted at rest in persistent storage.
149
+
150
+ ### Compatibility
151
+
152
+ - Existing direct `private_key=` capability issuance remains supported.
153
+ - v0.9 CLI commands remain available.
154
+ - Existing adapter security semantics continue to use the same authorization core.
@@ -0,0 +1,170 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-firewall-security
3
+ Version: 1.0.0
4
+ Summary: Security and authorization layer for AI agents and automated tool use.
5
+ Project-URL: Homepage, https://github.com/Shubhbhangoo/agent-firewall
6
+ Project-URL: Repository, https://github.com/Shubhbhangoo/agent-firewall
7
+ Project-URL: Issues, https://github.com/Shubhbhangoo/agent-firewall/issues
8
+ Requires-Python: >=3.10
9
+ Description-Content-Type: text/markdown
10
+ Requires-Dist: PyYAML>=6.0
11
+ Requires-Dist: mcp>=2.0
12
+ Requires-Dist: cryptography>=41.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: pytest>=9.0; extra == "dev"
15
+ Requires-Dist: hypothesis>=6.0; extra == "dev"
16
+
17
+ Agent Firewall
18
+
19
+ Security and authorization infrastructure for AI agents and automated tool use.
20
+
21
+ Agent Firewall provides a capability-based security layer between agents and the actions they are allowed to perform.
22
+
23
+ ## v1.0
24
+
25
+ Agent Firewall v1.0 is the first stable release.
26
+
27
+ ### Core security
28
+
29
+ - Capability-based authorization
30
+ - Cryptographic capability verification
31
+ - Capability attenuation
32
+ - Capability delegation
33
+ - Capability revocation
34
+ - Replay protection
35
+ - Lifecycle recording
36
+ - Expiration enforcement
37
+ - Issuer trust management
38
+ - Signing-key rotation
39
+ - Key retirement
40
+ - Fail-closed authorization semantics
41
+
42
+ ### Persistent security state
43
+
44
+ v1.0 supports persistent managed signing keys and issuer trust state.
45
+
46
+ ```python
47
+ import os
48
+
49
+ from firewall.sdk import FirewallSDK
50
+
51
+ master_key = os.urandom(32)
52
+
53
+ sdk = FirewallSDK(
54
+ key_store_path="firewall-keys.db",
55
+ master_key=master_key,
56
+ )
57
+
58
+ sdk.generate_key("key-1")
59
+
60
+ capability = sdk.issue(
61
+ agent="agent-a",
62
+ capability="payments.send",
63
+ )
64
+
65
+ Private signing keys are encrypted at rest.
66
+
67
+ The master key is supplied by the application and is never stored by Agent Firewall.
68
+
69
+ Key rotation
70
+ sdk.rotate_key("key-2")
71
+
72
+ Rotation creates a new active signing key and retires the previous one.
73
+
74
+ Previously issued capabilities are not automatically revoked.
75
+
76
+ Issuer trust
77
+ sdk.trust_issuer("issuer-a")
78
+ sdk.revoke_issuer("issuer-a")
79
+
80
+ Issuer trust state can survive SDK restart when persistent key storage is enabled.
81
+
82
+ Legacy issuance
83
+
84
+ The existing direct-key API remains supported:
85
+
86
+ sdk.issue(
87
+ private_key=private_key,
88
+ agent="agent-a",
89
+ capability="payments.send",
90
+ )
91
+ CLI
92
+ firewall init
93
+ firewall validate
94
+ firewall inspect-token
95
+ firewall explain
96
+ Security testing
97
+
98
+ The project includes:
99
+
100
+ unit tests
101
+ integration tests
102
+ property-based tests
103
+ state-machine tests
104
+ persistence failure tests
105
+ adapter interoperability tests
106
+ benchmark coverage
107
+
108
+ The CI security matrix runs the complete test suite on Python 3.10, 3.11, and 3.12.
109
+
110
+ Installation
111
+ pip install agent-firewall
112
+ Documentation
113
+
114
+ See:
115
+
116
+ docs/v1.0-api-contract.md
117
+ docs/v1.0-security.md
118
+ docs/v1.0-key-management.md
119
+
120
+ ### `CHANGELOG.md`
121
+
122
+ Create or update:
123
+
124
+ ```md
125
+ # Changelog
126
+
127
+ All notable changes to Agent Firewall are documented here.
128
+
129
+ ## [1.0.0] - 2026-08-23
130
+
131
+ ### Added
132
+
133
+ - Stable v1.0 public API contract
134
+ - Managed capability signing keys
135
+ - Signing-key rotation
136
+ - Signing-key retirement
137
+ - Persistent encrypted signing-key storage
138
+ - Persistent issuer trust state
139
+ - Issuer trust and revocation management
140
+ - Persistent lifecycle and revocation support
141
+ - Generic tool adapter
142
+ - OpenAI tool adapter
143
+ - Anthropic tool adapter
144
+ - Capability normalization
145
+ - Capability explanation and denial reporting
146
+ - CLI commands:
147
+ - `firewall init`
148
+ - `firewall validate`
149
+ - `firewall inspect-token`
150
+ - `firewall explain`
151
+ - Property-based security tests
152
+ - Lifecycle state-machine security tests
153
+ - Persistence failure and corruption tests
154
+ - CI security regression matrix
155
+ - Python 3.10, 3.11, and 3.12 CI coverage
156
+ - v1.0 security and key-management documentation
157
+
158
+ ### Security
159
+
160
+ - Authorization fails closed when critical security state cannot be verified.
161
+ - Persistent key-store failures do not silently fall back to cached or newly generated signing authority.
162
+ - Retiring or rotating a key does not implicitly grant or revoke capability authority.
163
+ - Revoked, expired, replayed, and denied capabilities cannot transition into successful use.
164
+ - Private signing-key material is encrypted at rest in persistent storage.
165
+
166
+ ### Compatibility
167
+
168
+ - Existing direct `private_key=` capability issuance remains supported.
169
+ - v0.9 CLI commands remain available.
170
+ - Existing adapter security semantics continue to use the same authorization core.
@@ -0,0 +1,38 @@
1
+ README.md
2
+ pyproject.toml
3
+ agent_firewall_security.egg-info/PKG-INFO
4
+ agent_firewall_security.egg-info/SOURCES.txt
5
+ agent_firewall_security.egg-info/dependency_links.txt
6
+ agent_firewall_security.egg-info/entry_points.txt
7
+ agent_firewall_security.egg-info/requires.txt
8
+ agent_firewall_security.egg-info/top_level.txt
9
+ firewall/__init__.py
10
+ firewall/attenuation.py
11
+ firewall/authorization.py
12
+ firewall/capability.py
13
+ firewall/cli.py
14
+ firewall/delegation.py
15
+ firewall/engine.py
16
+ firewall/evidence.py
17
+ firewall/explain.py
18
+ firewall/http.py
19
+ firewall/identity.py
20
+ firewall/key_management.py
21
+ firewall/key_store.py
22
+ firewall/lifecycle.py
23
+ firewall/lifecycle_store.py
24
+ firewall/mcp.py
25
+ firewall/namespace.py
26
+ firewall/protect.py
27
+ firewall/replay.py
28
+ firewall/revocation.py
29
+ firewall/revocation_store.py
30
+ firewall/sdk.py
31
+ firewall/tools.py
32
+ firewall/transport.py
33
+ firewall/adapters/__init__.py
34
+ firewall/adapters/anthropic.py
35
+ firewall/adapters/generic.py
36
+ firewall/adapters/normalize.py
37
+ firewall/adapters/openai.py
38
+ tests/test_engine.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ firewall = firewall.cli:main
@@ -0,0 +1,7 @@
1
+ PyYAML>=6.0
2
+ mcp>=2.0
3
+ cryptography>=41.0
4
+
5
+ [dev]
6
+ pytest>=9.0
7
+ hypothesis>=6.0
@@ -0,0 +1,80 @@
1
+ from .engine import (
2
+ Firewall,
3
+ Decision,
4
+ )
5
+
6
+ from .sdk import (
7
+ FirewallSDK,
8
+ )
9
+
10
+ from .capability import (
11
+ Capability,
12
+ CapabilityVerifier,
13
+ capability_fingerprint,
14
+ generate_capability_key_pair,
15
+ sign_capability,
16
+ )
17
+
18
+ from .delegation import (
19
+ Delegation,
20
+ )
21
+
22
+ from .revocation import (
23
+ RevocationRegistry,
24
+ RevocationRecord,
25
+ RevocationError,
26
+ AlreadyRevokedError,
27
+ InvalidFingerprintError,
28
+ RevokedCapabilityError,
29
+ )
30
+
31
+ from .lifecycle import (
32
+ LifecycleEvent,
33
+ LifecycleEventType,
34
+ LifecycleRecorder,
35
+ )
36
+
37
+ from .lifecycle_store import (
38
+ LifecycleStore,
39
+ LifecycleStoreError,
40
+ LifecycleStoreClosedError,
41
+ SQLiteLifecycleStore,
42
+ )
43
+
44
+ __all__ = [
45
+ # Engine
46
+ "Firewall",
47
+ "Decision",
48
+
49
+ # SDK
50
+ "FirewallSDK",
51
+
52
+ # Capabilities
53
+ "Capability",
54
+ "CapabilityVerifier",
55
+ "capability_fingerprint",
56
+ "generate_capability_key_pair",
57
+ "sign_capability",
58
+
59
+ # Delegation
60
+ "Delegation",
61
+
62
+ # Revocation
63
+ "RevocationRegistry",
64
+ "RevocationRecord",
65
+ "RevocationError",
66
+ "AlreadyRevokedError",
67
+ "InvalidFingerprintError",
68
+ "RevokedCapabilityError",
69
+
70
+ # Lifecycle
71
+ "LifecycleEvent",
72
+ "LifecycleEventType",
73
+ "LifecycleRecorder",
74
+
75
+ # Lifecycle persistence
76
+ "LifecycleStore",
77
+ "LifecycleStoreError",
78
+ "LifecycleStoreClosedError",
79
+ "SQLiteLifecycleStore",
80
+ ]
@@ -0,0 +1,30 @@
1
+ from .generic import (
2
+ GenericToolAdapter,
3
+ GenericToolCall,
4
+ generic_tool,
5
+ )
6
+
7
+ from .openai import (
8
+ OpenAITool,
9
+ openai_tool,
10
+ )
11
+
12
+ from .anthropic import (
13
+ AnthropicTool,
14
+ anthropic_tool,
15
+ )
16
+
17
+ from .normalize import (
18
+ normalize_tool_call,
19
+ )
20
+
21
+ __all__ = [
22
+ "GenericToolAdapter",
23
+ "GenericToolCall",
24
+ "generic_tool",
25
+ "OpenAITool",
26
+ "openai_tool",
27
+ "AnthropicTool",
28
+ "anthropic_tool",
29
+ "normalize_tool_call",
30
+ ]