arcaeon 0.1.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.
arcaeon-0.1.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Arcaeon
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.
arcaeon-0.1.2/PKG-INFO ADDED
@@ -0,0 +1,224 @@
1
+ Metadata-Version: 2.4
2
+ Name: arcaeon
3
+ Version: 0.1.2
4
+ Summary: Arcaeon's tools on one MCP connector: tamper-evident agent ledger, MCP-server source checker, hosted witness. Free to install.
5
+ Author: Arcaeon
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://arcaeon.io
8
+ Project-URL: Offers, https://arcaeon.io/.well-known/offers.json
9
+ Keywords: mcp,model-context-protocol,agents,audit,tamper-evident,provenance,security
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Topic :: Security
15
+ Classifier: Topic :: Software Development :: Libraries
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: mcp>=1.0
20
+ Requires-Dist: arcaeon-ledger>=0.7.0
21
+ Requires-Dist: arcaeon-mcp-vet>=0.0.8
22
+ Provides-Extra: dev
23
+ Requires-Dist: pytest>=7; extra == "dev"
24
+ Dynamic: license-file
25
+
26
+ # arcaeon
27
+
28
+ **One MCP connector for the whole Arcaeon toolbox.** Install once, wire one
29
+ stanza into your client, get eleven tools: a tamper-evident agent ledger, a
30
+ static checker for MCP-server source, and the hosted witness that catches
31
+ truncation.
32
+
33
+ Free to install. Free to use, except the two tools that spend money on our side,
34
+ and those tell you the price in plain English instead of failing.
35
+
36
+ Arcaeon ships a shelf of small single-purpose packages. A shelf is a
37
+ distribution problem: an agent that would use three of them has to find three,
38
+ install three, and wire three stanzas. Most never get past the first. This is
39
+ the one door.
40
+
41
+ ---
42
+
43
+ ## Install
44
+
45
+ ```bash
46
+ pip install arcaeon
47
+ ```
48
+
49
+ **Today that command does not work yet, and this README is not going to pretend
50
+ otherwise.** The connector depends on `arcaeon-ledger>=0.7.0` and
51
+ `arcaeon-mcp-vet>=0.0.8`; PyPI currently has arcaeon-ledger 0.5.9 and no mcp-vet at all.
52
+ Until both are published, install the two from source first:
53
+
54
+ ```bash
55
+ pip install -e path/to/arcaeon-ledger # 0.7.0 — the agent tools live here
56
+ pip install -e path/to/mcp_vet # 0.0.7
57
+ pip install -e path/to/arcaeon_connector # this package
58
+ ```
59
+
60
+ The dependency pins are declared honestly rather than loosened to whatever PyPI
61
+ happens to hold: a `>=0.5.9` that installs and then fails at import is worse
62
+ than a resolver error that says what is missing.
63
+
64
+ Check the install without starting a server:
65
+
66
+ ```bash
67
+ arcaeon-mcp --tools
68
+ ```
69
+
70
+ ## Wire it into a client
71
+
72
+ `.mcp.json` (Claude Code and friends):
73
+
74
+ ```json
75
+ {
76
+ "mcpServers": {
77
+ "arcaeon": {
78
+ "command": "arcaeon-mcp",
79
+ "args": ["--log", "agent.log.jsonl"],
80
+ "env": {}
81
+ }
82
+ }
83
+ }
84
+ ```
85
+
86
+ With the paid lane switched on, and the ledger somewhere deliberate:
87
+
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "arcaeon": {
92
+ "command": "arcaeon-mcp",
93
+ "args": ["--log", "state/agent.log.jsonl", "--ns-dir", "state/ledgers"],
94
+ "env": {
95
+ "ARCAEON_KEY": "your-witness-key"
96
+ }
97
+ }
98
+ }
99
+ }
100
+ ```
101
+
102
+ If your client cannot run console scripts, `"command": "python", "args": ["-m",
103
+ "arcaeon_connector"]` is the same server.
104
+
105
+ ## The tools
106
+
107
+ | Tool | Cost | What it does |
108
+ |---|---|---|
109
+ | `ledger_append` | free | Append one action record to a hash-chained log; returns its chain hash. |
110
+ | `ledger_verify` | free | Verify the chain. Three-valued: `true` every row verified, `null` the scan was bounded (**not a green**), `false` names the exact broken line. |
111
+ | `ledger_prove_my_conduct` | free | Log a batch to your own named ledger, get back one head hash to hand your principal. |
112
+ | `ledger_verify_peer_ledger` | free | Judge ANOTHER agent's exported log from its text alone. No access to their machine, no writes on yours. |
113
+ | `ledger_declare_break` | free | Your log broke. Name the break instead of re-minting a chain that verifies. |
114
+ | `vet_scan` | free | Statically scan a Python MCP server's source; findings with exact line numbers. |
115
+ | `vet_grade` | free | The full re-testable grade artifact: `source_sha256`, findings, checks run, declared blind spots, verdict. |
116
+ | `vet_audit_verify` | free | Recompute the hash chain over mcp-vet's own call-record ledger; three-valued `ok`, `rows`, `breaks`, `first_break`. |
117
+ | `witness_pin` | **paid** | Pin your ledger head with a party you cannot advance. The only thing that catches truncation. |
118
+ | `witness_renew` | **paid** | Restate an unchanged head so a finished log stops looking abandoned. |
119
+ | `arcaeon_status` | free | Versions, the free/paid split, whether a key is set, where the ledger is. |
120
+
121
+ Names are prefixed by which product answers: `ledger_*`, `vet_*`, `witness_*`.
122
+
123
+ ## The paid lane
124
+
125
+ Two tools need `ARCAEON_KEY`, because a hosted pin is a commit somebody pays
126
+ for. Called without a key they return a plain sentence:
127
+
128
+ ```
129
+ witness_pin is a paid Arcaeon tool and no ARCAEON_KEY is set, so nothing was sent.
130
+
131
+ It pins your ledger head with the hosted witness (https://witness.arcaeon.io): a
132
+ party you cannot advance, which is the only thing that catches truncation.
133
+
134
+ Free tier: 100 pins/month, no card. To get one: email hello@arcaeon.io or ask
135
+ Nora for a key.
136
+ Entry pack: $5 for 1,000 pins ($0.005/pin): https://buy.stripe.com/aFa4gAb10ead3xy35f0RG08
137
+ ...
138
+ ```
139
+
140
+ No stack trace, no silent nothing, and the free door named before the paid one —
141
+ the witness free tier is 100 pins/month with no card, and the witness library
142
+ itself is self-hostable free forever (point `ARCAEON_WITNESS_URL` at your own
143
+ deployment and the same two tools work). The catalog those numbers come from is
144
+ [`/.well-known/offers.json`](https://arcaeon.io/.well-known/offers.json), and a
145
+ test in this repo fails if the copy in the code drifts from it.
146
+
147
+ ## Environment
148
+
149
+ | Variable | Default | Meaning |
150
+ |---|---|---|
151
+ | `ARCAEON_KEY` | unset | Witness bearer key. Unset means the two paid tools explain themselves instead of running. |
152
+ | `ARCAEON_LEDGER_LOG` | `agent.log.jsonl` | The ledger `ledger_append` / `ledger_verify` write. Same as `--log`. |
153
+ | `ARCAEON_LEDGER_NS_DIR` | `ledgers/` beside the log | Per-namespace agent ledgers. Same as `--ns-dir`. |
154
+ | `ARCAEON_WITNESS_URL` | `https://witness.arcaeon.io` | Point the witness tools at your own self-hosted deployment. |
155
+ | `LICENSE_GATE_REQUIRED` | unset (off) | Set to `1` to also require a license key on the two paid tools. Off by default; see below. |
156
+ | `ARCAEON_LICENSE_KEY` | unset | The license key, when the gate is on. Bound to a ledger namespace, not to a machine. |
157
+ | `LICENSE_GATE_MODULE` | auto | Override which module implements the gate. Only useful to a self-hoster or a test. |
158
+
159
+ ## The optional license gate (off by default)
160
+
161
+ A second, optional gate sits in front of the same two paid tools and answers a
162
+ different question: not "does this caller have a witness account" (that is
163
+ `ARCAEON_KEY`) but "is this copy of the package licensed". It is **inert unless
164
+ you set `LICENSE_GATE_REQUIRED=1`** - unset, nothing here imports, nothing here
165
+ runs, and the connector behaves exactly as it did before this existed.
166
+
167
+ When it is on, the license is bound to the **ledger namespace being pinned**.
168
+ That is the whole idea: a borrowed key would have to pin under the lender's
169
+ namespace, into the lender's public pin history, under the lender's name. The
170
+ gate does not prevent that; it makes it self-incriminating, which for people
171
+ who buy audit tooling is the part that bites.
172
+
173
+ It **fails closed**. `LICENSE_GATE_REQUIRED=1` with no gate module installed
174
+ refuses the paid tools rather than waving them through, because a required
175
+ check that passes because its own implementation is missing looks enforced and
176
+ is nothing.
177
+
178
+ Honest limit, stated here as well as in the gate's own README: a client-side
179
+ license check deters, it does not prevent. Anyone who can edit the package can
180
+ delete the call. The real moat is updates and the ledger identity, not this.
181
+
182
+ ## What this does NOT prove
183
+
184
+ Inherited from the packages it bundles, restated here because a bundle that
185
+ drops the caveats is selling a stronger claim than its parts:
186
+
187
+ - **Tamper-evidence is not truth.** The ledger proves a record was not altered.
188
+ It says nothing about whether what it records was correct, or whether the
189
+ agent that wrote it was honest at the time.
190
+ - **A clean `vet_scan` is not "safe".** It means a small set of documented
191
+ failure classes found nothing. mcp-vet publishes its own blind spots inside
192
+ every grade, including one it demonstrates on its own server.
193
+ - **A pin proves no-truncation only relative to what the witness saw, and only
194
+ as recently as the last pin.** The pin gap is the security parameter.
195
+ - **Witness auth is bearer-key only** (`auth_level: "bearer-stage0"`). A leaked
196
+ key can pin and renew in your name. Owner-signature auth is designed
197
+ (STAGE1_SIGNATURE_DESIGN) and not built.
198
+ - **This connector adds no analysis of its own.** It re-exports; the ledger
199
+ tools dispatch straight into `arcaeon_ledger.mcp_server.handle`, the same
200
+ function the standalone server runs. If a result here disagrees with the
201
+ standalone server, that is a bug in this package, and one of the tests exists
202
+ to catch exactly that shape of drift.
203
+
204
+ ## Run the tests
205
+
206
+ ```bash
207
+ pip install -e ".[dev]"
208
+ pytest -q
209
+ ```
210
+
211
+ Fifteen tests. Every one drives a real MCP round-trip; one of them spawns the
212
+ installed entry point as a subprocess and speaks raw JSON-RPC down the pipe,
213
+ because "one install and it works" is a claim about the package, not about an
214
+ importable module.
215
+
216
+ ## Security note
217
+
218
+ Local stdio only. The tools read caller-named paths, so do not put this behind a
219
+ network transport without an auth layer in front — which is what `vet_scan`'s
220
+ own `zero-auth` check would tell you about anyone else's server.
221
+
222
+ MIT licensed. Every product Arcaeon charges for is listed in
223
+ [`/.well-known/offers.json`](https://arcaeon.io/.well-known/offers.json); a
224
+ charge that is not in that file is not ours.
@@ -0,0 +1,199 @@
1
+ # arcaeon
2
+
3
+ **One MCP connector for the whole Arcaeon toolbox.** Install once, wire one
4
+ stanza into your client, get eleven tools: a tamper-evident agent ledger, a
5
+ static checker for MCP-server source, and the hosted witness that catches
6
+ truncation.
7
+
8
+ Free to install. Free to use, except the two tools that spend money on our side,
9
+ and those tell you the price in plain English instead of failing.
10
+
11
+ Arcaeon ships a shelf of small single-purpose packages. A shelf is a
12
+ distribution problem: an agent that would use three of them has to find three,
13
+ install three, and wire three stanzas. Most never get past the first. This is
14
+ the one door.
15
+
16
+ ---
17
+
18
+ ## Install
19
+
20
+ ```bash
21
+ pip install arcaeon
22
+ ```
23
+
24
+ **Today that command does not work yet, and this README is not going to pretend
25
+ otherwise.** The connector depends on `arcaeon-ledger>=0.7.0` and
26
+ `arcaeon-mcp-vet>=0.0.8`; PyPI currently has arcaeon-ledger 0.5.9 and no mcp-vet at all.
27
+ Until both are published, install the two from source first:
28
+
29
+ ```bash
30
+ pip install -e path/to/arcaeon-ledger # 0.7.0 — the agent tools live here
31
+ pip install -e path/to/mcp_vet # 0.0.7
32
+ pip install -e path/to/arcaeon_connector # this package
33
+ ```
34
+
35
+ The dependency pins are declared honestly rather than loosened to whatever PyPI
36
+ happens to hold: a `>=0.5.9` that installs and then fails at import is worse
37
+ than a resolver error that says what is missing.
38
+
39
+ Check the install without starting a server:
40
+
41
+ ```bash
42
+ arcaeon-mcp --tools
43
+ ```
44
+
45
+ ## Wire it into a client
46
+
47
+ `.mcp.json` (Claude Code and friends):
48
+
49
+ ```json
50
+ {
51
+ "mcpServers": {
52
+ "arcaeon": {
53
+ "command": "arcaeon-mcp",
54
+ "args": ["--log", "agent.log.jsonl"],
55
+ "env": {}
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ With the paid lane switched on, and the ledger somewhere deliberate:
62
+
63
+ ```json
64
+ {
65
+ "mcpServers": {
66
+ "arcaeon": {
67
+ "command": "arcaeon-mcp",
68
+ "args": ["--log", "state/agent.log.jsonl", "--ns-dir", "state/ledgers"],
69
+ "env": {
70
+ "ARCAEON_KEY": "your-witness-key"
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ If your client cannot run console scripts, `"command": "python", "args": ["-m",
78
+ "arcaeon_connector"]` is the same server.
79
+
80
+ ## The tools
81
+
82
+ | Tool | Cost | What it does |
83
+ |---|---|---|
84
+ | `ledger_append` | free | Append one action record to a hash-chained log; returns its chain hash. |
85
+ | `ledger_verify` | free | Verify the chain. Three-valued: `true` every row verified, `null` the scan was bounded (**not a green**), `false` names the exact broken line. |
86
+ | `ledger_prove_my_conduct` | free | Log a batch to your own named ledger, get back one head hash to hand your principal. |
87
+ | `ledger_verify_peer_ledger` | free | Judge ANOTHER agent's exported log from its text alone. No access to their machine, no writes on yours. |
88
+ | `ledger_declare_break` | free | Your log broke. Name the break instead of re-minting a chain that verifies. |
89
+ | `vet_scan` | free | Statically scan a Python MCP server's source; findings with exact line numbers. |
90
+ | `vet_grade` | free | The full re-testable grade artifact: `source_sha256`, findings, checks run, declared blind spots, verdict. |
91
+ | `vet_audit_verify` | free | Recompute the hash chain over mcp-vet's own call-record ledger; three-valued `ok`, `rows`, `breaks`, `first_break`. |
92
+ | `witness_pin` | **paid** | Pin your ledger head with a party you cannot advance. The only thing that catches truncation. |
93
+ | `witness_renew` | **paid** | Restate an unchanged head so a finished log stops looking abandoned. |
94
+ | `arcaeon_status` | free | Versions, the free/paid split, whether a key is set, where the ledger is. |
95
+
96
+ Names are prefixed by which product answers: `ledger_*`, `vet_*`, `witness_*`.
97
+
98
+ ## The paid lane
99
+
100
+ Two tools need `ARCAEON_KEY`, because a hosted pin is a commit somebody pays
101
+ for. Called without a key they return a plain sentence:
102
+
103
+ ```
104
+ witness_pin is a paid Arcaeon tool and no ARCAEON_KEY is set, so nothing was sent.
105
+
106
+ It pins your ledger head with the hosted witness (https://witness.arcaeon.io): a
107
+ party you cannot advance, which is the only thing that catches truncation.
108
+
109
+ Free tier: 100 pins/month, no card. To get one: email hello@arcaeon.io or ask
110
+ Nora for a key.
111
+ Entry pack: $5 for 1,000 pins ($0.005/pin): https://buy.stripe.com/aFa4gAb10ead3xy35f0RG08
112
+ ...
113
+ ```
114
+
115
+ No stack trace, no silent nothing, and the free door named before the paid one —
116
+ the witness free tier is 100 pins/month with no card, and the witness library
117
+ itself is self-hostable free forever (point `ARCAEON_WITNESS_URL` at your own
118
+ deployment and the same two tools work). The catalog those numbers come from is
119
+ [`/.well-known/offers.json`](https://arcaeon.io/.well-known/offers.json), and a
120
+ test in this repo fails if the copy in the code drifts from it.
121
+
122
+ ## Environment
123
+
124
+ | Variable | Default | Meaning |
125
+ |---|---|---|
126
+ | `ARCAEON_KEY` | unset | Witness bearer key. Unset means the two paid tools explain themselves instead of running. |
127
+ | `ARCAEON_LEDGER_LOG` | `agent.log.jsonl` | The ledger `ledger_append` / `ledger_verify` write. Same as `--log`. |
128
+ | `ARCAEON_LEDGER_NS_DIR` | `ledgers/` beside the log | Per-namespace agent ledgers. Same as `--ns-dir`. |
129
+ | `ARCAEON_WITNESS_URL` | `https://witness.arcaeon.io` | Point the witness tools at your own self-hosted deployment. |
130
+ | `LICENSE_GATE_REQUIRED` | unset (off) | Set to `1` to also require a license key on the two paid tools. Off by default; see below. |
131
+ | `ARCAEON_LICENSE_KEY` | unset | The license key, when the gate is on. Bound to a ledger namespace, not to a machine. |
132
+ | `LICENSE_GATE_MODULE` | auto | Override which module implements the gate. Only useful to a self-hoster or a test. |
133
+
134
+ ## The optional license gate (off by default)
135
+
136
+ A second, optional gate sits in front of the same two paid tools and answers a
137
+ different question: not "does this caller have a witness account" (that is
138
+ `ARCAEON_KEY`) but "is this copy of the package licensed". It is **inert unless
139
+ you set `LICENSE_GATE_REQUIRED=1`** - unset, nothing here imports, nothing here
140
+ runs, and the connector behaves exactly as it did before this existed.
141
+
142
+ When it is on, the license is bound to the **ledger namespace being pinned**.
143
+ That is the whole idea: a borrowed key would have to pin under the lender's
144
+ namespace, into the lender's public pin history, under the lender's name. The
145
+ gate does not prevent that; it makes it self-incriminating, which for people
146
+ who buy audit tooling is the part that bites.
147
+
148
+ It **fails closed**. `LICENSE_GATE_REQUIRED=1` with no gate module installed
149
+ refuses the paid tools rather than waving them through, because a required
150
+ check that passes because its own implementation is missing looks enforced and
151
+ is nothing.
152
+
153
+ Honest limit, stated here as well as in the gate's own README: a client-side
154
+ license check deters, it does not prevent. Anyone who can edit the package can
155
+ delete the call. The real moat is updates and the ledger identity, not this.
156
+
157
+ ## What this does NOT prove
158
+
159
+ Inherited from the packages it bundles, restated here because a bundle that
160
+ drops the caveats is selling a stronger claim than its parts:
161
+
162
+ - **Tamper-evidence is not truth.** The ledger proves a record was not altered.
163
+ It says nothing about whether what it records was correct, or whether the
164
+ agent that wrote it was honest at the time.
165
+ - **A clean `vet_scan` is not "safe".** It means a small set of documented
166
+ failure classes found nothing. mcp-vet publishes its own blind spots inside
167
+ every grade, including one it demonstrates on its own server.
168
+ - **A pin proves no-truncation only relative to what the witness saw, and only
169
+ as recently as the last pin.** The pin gap is the security parameter.
170
+ - **Witness auth is bearer-key only** (`auth_level: "bearer-stage0"`). A leaked
171
+ key can pin and renew in your name. Owner-signature auth is designed
172
+ (STAGE1_SIGNATURE_DESIGN) and not built.
173
+ - **This connector adds no analysis of its own.** It re-exports; the ledger
174
+ tools dispatch straight into `arcaeon_ledger.mcp_server.handle`, the same
175
+ function the standalone server runs. If a result here disagrees with the
176
+ standalone server, that is a bug in this package, and one of the tests exists
177
+ to catch exactly that shape of drift.
178
+
179
+ ## Run the tests
180
+
181
+ ```bash
182
+ pip install -e ".[dev]"
183
+ pytest -q
184
+ ```
185
+
186
+ Fifteen tests. Every one drives a real MCP round-trip; one of them spawns the
187
+ installed entry point as a subprocess and speaks raw JSON-RPC down the pipe,
188
+ because "one install and it works" is a claim about the package, not about an
189
+ importable module.
190
+
191
+ ## Security note
192
+
193
+ Local stdio only. The tools read caller-named paths, so do not put this behind a
194
+ network transport without an auth layer in front — which is what `vet_scan`'s
195
+ own `zero-auth` check would tell you about anyone else's server.
196
+
197
+ MIT licensed. Every product Arcaeon charges for is listed in
198
+ [`/.well-known/offers.json`](https://arcaeon.io/.well-known/offers.json); a
199
+ charge that is not in that file is not ours.
@@ -0,0 +1,224 @@
1
+ Metadata-Version: 2.4
2
+ Name: arcaeon
3
+ Version: 0.1.2
4
+ Summary: Arcaeon's tools on one MCP connector: tamper-evident agent ledger, MCP-server source checker, hosted witness. Free to install.
5
+ Author: Arcaeon
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://arcaeon.io
8
+ Project-URL: Offers, https://arcaeon.io/.well-known/offers.json
9
+ Keywords: mcp,model-context-protocol,agents,audit,tamper-evident,provenance,security
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Topic :: Security
15
+ Classifier: Topic :: Software Development :: Libraries
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: mcp>=1.0
20
+ Requires-Dist: arcaeon-ledger>=0.7.0
21
+ Requires-Dist: arcaeon-mcp-vet>=0.0.8
22
+ Provides-Extra: dev
23
+ Requires-Dist: pytest>=7; extra == "dev"
24
+ Dynamic: license-file
25
+
26
+ # arcaeon
27
+
28
+ **One MCP connector for the whole Arcaeon toolbox.** Install once, wire one
29
+ stanza into your client, get eleven tools: a tamper-evident agent ledger, a
30
+ static checker for MCP-server source, and the hosted witness that catches
31
+ truncation.
32
+
33
+ Free to install. Free to use, except the two tools that spend money on our side,
34
+ and those tell you the price in plain English instead of failing.
35
+
36
+ Arcaeon ships a shelf of small single-purpose packages. A shelf is a
37
+ distribution problem: an agent that would use three of them has to find three,
38
+ install three, and wire three stanzas. Most never get past the first. This is
39
+ the one door.
40
+
41
+ ---
42
+
43
+ ## Install
44
+
45
+ ```bash
46
+ pip install arcaeon
47
+ ```
48
+
49
+ **Today that command does not work yet, and this README is not going to pretend
50
+ otherwise.** The connector depends on `arcaeon-ledger>=0.7.0` and
51
+ `arcaeon-mcp-vet>=0.0.8`; PyPI currently has arcaeon-ledger 0.5.9 and no mcp-vet at all.
52
+ Until both are published, install the two from source first:
53
+
54
+ ```bash
55
+ pip install -e path/to/arcaeon-ledger # 0.7.0 — the agent tools live here
56
+ pip install -e path/to/mcp_vet # 0.0.7
57
+ pip install -e path/to/arcaeon_connector # this package
58
+ ```
59
+
60
+ The dependency pins are declared honestly rather than loosened to whatever PyPI
61
+ happens to hold: a `>=0.5.9` that installs and then fails at import is worse
62
+ than a resolver error that says what is missing.
63
+
64
+ Check the install without starting a server:
65
+
66
+ ```bash
67
+ arcaeon-mcp --tools
68
+ ```
69
+
70
+ ## Wire it into a client
71
+
72
+ `.mcp.json` (Claude Code and friends):
73
+
74
+ ```json
75
+ {
76
+ "mcpServers": {
77
+ "arcaeon": {
78
+ "command": "arcaeon-mcp",
79
+ "args": ["--log", "agent.log.jsonl"],
80
+ "env": {}
81
+ }
82
+ }
83
+ }
84
+ ```
85
+
86
+ With the paid lane switched on, and the ledger somewhere deliberate:
87
+
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "arcaeon": {
92
+ "command": "arcaeon-mcp",
93
+ "args": ["--log", "state/agent.log.jsonl", "--ns-dir", "state/ledgers"],
94
+ "env": {
95
+ "ARCAEON_KEY": "your-witness-key"
96
+ }
97
+ }
98
+ }
99
+ }
100
+ ```
101
+
102
+ If your client cannot run console scripts, `"command": "python", "args": ["-m",
103
+ "arcaeon_connector"]` is the same server.
104
+
105
+ ## The tools
106
+
107
+ | Tool | Cost | What it does |
108
+ |---|---|---|
109
+ | `ledger_append` | free | Append one action record to a hash-chained log; returns its chain hash. |
110
+ | `ledger_verify` | free | Verify the chain. Three-valued: `true` every row verified, `null` the scan was bounded (**not a green**), `false` names the exact broken line. |
111
+ | `ledger_prove_my_conduct` | free | Log a batch to your own named ledger, get back one head hash to hand your principal. |
112
+ | `ledger_verify_peer_ledger` | free | Judge ANOTHER agent's exported log from its text alone. No access to their machine, no writes on yours. |
113
+ | `ledger_declare_break` | free | Your log broke. Name the break instead of re-minting a chain that verifies. |
114
+ | `vet_scan` | free | Statically scan a Python MCP server's source; findings with exact line numbers. |
115
+ | `vet_grade` | free | The full re-testable grade artifact: `source_sha256`, findings, checks run, declared blind spots, verdict. |
116
+ | `vet_audit_verify` | free | Recompute the hash chain over mcp-vet's own call-record ledger; three-valued `ok`, `rows`, `breaks`, `first_break`. |
117
+ | `witness_pin` | **paid** | Pin your ledger head with a party you cannot advance. The only thing that catches truncation. |
118
+ | `witness_renew` | **paid** | Restate an unchanged head so a finished log stops looking abandoned. |
119
+ | `arcaeon_status` | free | Versions, the free/paid split, whether a key is set, where the ledger is. |
120
+
121
+ Names are prefixed by which product answers: `ledger_*`, `vet_*`, `witness_*`.
122
+
123
+ ## The paid lane
124
+
125
+ Two tools need `ARCAEON_KEY`, because a hosted pin is a commit somebody pays
126
+ for. Called without a key they return a plain sentence:
127
+
128
+ ```
129
+ witness_pin is a paid Arcaeon tool and no ARCAEON_KEY is set, so nothing was sent.
130
+
131
+ It pins your ledger head with the hosted witness (https://witness.arcaeon.io): a
132
+ party you cannot advance, which is the only thing that catches truncation.
133
+
134
+ Free tier: 100 pins/month, no card. To get one: email hello@arcaeon.io or ask
135
+ Nora for a key.
136
+ Entry pack: $5 for 1,000 pins ($0.005/pin): https://buy.stripe.com/aFa4gAb10ead3xy35f0RG08
137
+ ...
138
+ ```
139
+
140
+ No stack trace, no silent nothing, and the free door named before the paid one —
141
+ the witness free tier is 100 pins/month with no card, and the witness library
142
+ itself is self-hostable free forever (point `ARCAEON_WITNESS_URL` at your own
143
+ deployment and the same two tools work). The catalog those numbers come from is
144
+ [`/.well-known/offers.json`](https://arcaeon.io/.well-known/offers.json), and a
145
+ test in this repo fails if the copy in the code drifts from it.
146
+
147
+ ## Environment
148
+
149
+ | Variable | Default | Meaning |
150
+ |---|---|---|
151
+ | `ARCAEON_KEY` | unset | Witness bearer key. Unset means the two paid tools explain themselves instead of running. |
152
+ | `ARCAEON_LEDGER_LOG` | `agent.log.jsonl` | The ledger `ledger_append` / `ledger_verify` write. Same as `--log`. |
153
+ | `ARCAEON_LEDGER_NS_DIR` | `ledgers/` beside the log | Per-namespace agent ledgers. Same as `--ns-dir`. |
154
+ | `ARCAEON_WITNESS_URL` | `https://witness.arcaeon.io` | Point the witness tools at your own self-hosted deployment. |
155
+ | `LICENSE_GATE_REQUIRED` | unset (off) | Set to `1` to also require a license key on the two paid tools. Off by default; see below. |
156
+ | `ARCAEON_LICENSE_KEY` | unset | The license key, when the gate is on. Bound to a ledger namespace, not to a machine. |
157
+ | `LICENSE_GATE_MODULE` | auto | Override which module implements the gate. Only useful to a self-hoster or a test. |
158
+
159
+ ## The optional license gate (off by default)
160
+
161
+ A second, optional gate sits in front of the same two paid tools and answers a
162
+ different question: not "does this caller have a witness account" (that is
163
+ `ARCAEON_KEY`) but "is this copy of the package licensed". It is **inert unless
164
+ you set `LICENSE_GATE_REQUIRED=1`** - unset, nothing here imports, nothing here
165
+ runs, and the connector behaves exactly as it did before this existed.
166
+
167
+ When it is on, the license is bound to the **ledger namespace being pinned**.
168
+ That is the whole idea: a borrowed key would have to pin under the lender's
169
+ namespace, into the lender's public pin history, under the lender's name. The
170
+ gate does not prevent that; it makes it self-incriminating, which for people
171
+ who buy audit tooling is the part that bites.
172
+
173
+ It **fails closed**. `LICENSE_GATE_REQUIRED=1` with no gate module installed
174
+ refuses the paid tools rather than waving them through, because a required
175
+ check that passes because its own implementation is missing looks enforced and
176
+ is nothing.
177
+
178
+ Honest limit, stated here as well as in the gate's own README: a client-side
179
+ license check deters, it does not prevent. Anyone who can edit the package can
180
+ delete the call. The real moat is updates and the ledger identity, not this.
181
+
182
+ ## What this does NOT prove
183
+
184
+ Inherited from the packages it bundles, restated here because a bundle that
185
+ drops the caveats is selling a stronger claim than its parts:
186
+
187
+ - **Tamper-evidence is not truth.** The ledger proves a record was not altered.
188
+ It says nothing about whether what it records was correct, or whether the
189
+ agent that wrote it was honest at the time.
190
+ - **A clean `vet_scan` is not "safe".** It means a small set of documented
191
+ failure classes found nothing. mcp-vet publishes its own blind spots inside
192
+ every grade, including one it demonstrates on its own server.
193
+ - **A pin proves no-truncation only relative to what the witness saw, and only
194
+ as recently as the last pin.** The pin gap is the security parameter.
195
+ - **Witness auth is bearer-key only** (`auth_level: "bearer-stage0"`). A leaked
196
+ key can pin and renew in your name. Owner-signature auth is designed
197
+ (STAGE1_SIGNATURE_DESIGN) and not built.
198
+ - **This connector adds no analysis of its own.** It re-exports; the ledger
199
+ tools dispatch straight into `arcaeon_ledger.mcp_server.handle`, the same
200
+ function the standalone server runs. If a result here disagrees with the
201
+ standalone server, that is a bug in this package, and one of the tests exists
202
+ to catch exactly that shape of drift.
203
+
204
+ ## Run the tests
205
+
206
+ ```bash
207
+ pip install -e ".[dev]"
208
+ pytest -q
209
+ ```
210
+
211
+ Fifteen tests. Every one drives a real MCP round-trip; one of them spawns the
212
+ installed entry point as a subprocess and speaks raw JSON-RPC down the pipe,
213
+ because "one install and it works" is a claim about the package, not about an
214
+ importable module.
215
+
216
+ ## Security note
217
+
218
+ Local stdio only. The tools read caller-named paths, so do not put this behind a
219
+ network transport without an auth layer in front — which is what `vet_scan`'s
220
+ own `zero-auth` check would tell you about anyone else's server.
221
+
222
+ MIT licensed. Every product Arcaeon charges for is listed in
223
+ [`/.well-known/offers.json`](https://arcaeon.io/.well-known/offers.json); a
224
+ charge that is not in that file is not ours.
@@ -0,0 +1,15 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ arcaeon.egg-info/PKG-INFO
5
+ arcaeon.egg-info/SOURCES.txt
6
+ arcaeon.egg-info/dependency_links.txt
7
+ arcaeon.egg-info/entry_points.txt
8
+ arcaeon.egg-info/requires.txt
9
+ arcaeon.egg-info/top_level.txt
10
+ arcaeon_connector/__init__.py
11
+ arcaeon_connector/__main__.py
12
+ arcaeon_connector/licensing.py
13
+ arcaeon_connector/offers.py
14
+ arcaeon_connector/server.py
15
+ arcaeon_connector/witness.py