Repository navigation
iqa-mcp 0.1.0 — first public release
First public release of iqa-mcp — the IQA attestation primitives (derived intent addressing + AE-128 envelope verification) as Model Context Protocol tools. Offline, fail-closed, stateless.
Tools
derive_route_shard—SHA-256(authority)[0:16]hex; the derived, action-independent intent address. No lookup, no registry, no network call.parse_envelope— structural decode of one AE-128 frame (128 bytes); fails closed on every layout rule of the companion draft.verify_envelope— constant-time HMAC-SHA256 over the whole 128-byte frame with the attestation field zeroed, plus the lease check. REJECT is a result, not an error.published_vector— the published AE128-VECTOR-1 (authority, test key, frame hex) for byte-for-byte self-test.
Install
pip install iqa-mcp==0.1.0
# or from source:
pip install "iqa-org>=1.3.1" "mcp>=2.0"
python server.py # stdio transportSelf-test
python test_mcp.py
# [PASS] 1-4 · tools, derivation, vector, parse
# [PASS] 5 · verify_envelope -> [PASS] radiant · nonce 1
# [PASS] 6 · tampered frame -> REJECT (HMAC mismatch)
# [PASS] 7 · malformed hex -> REJECT
# ALL 7/7 PASSTest 6 is the point: flip one byte of the standing field and the frame dies — fail-closed, over the wire.
Provenance
- Wraps the published iqa-org 1.3.1 reference implementation — four registries, byte-exact vectors, offline self-test.
- AE128-VECTOR-1 per the companion draft, sec. 6.
- Schemes: draft-li-rttp-iqa-addressing (Independent Submission, in review).
- Public record: iqa.org/brief · Tool page: iqa.org/MCP · Live demos: Stack Compare · Delegation Stress Test
Notes
- MCP 2.x SDK, stdio transport, Python ≥ 3.11.
- Stateless: no key storage, no network, no accounts. The organ key is passed per call by the client and never persisted.
- Assets attached below are the exact artifacts published to PyPI (
iqa_mcp-0.1.0-py3-none-any.whl,iqa_mcp-0.1.0.tar.gz).