Skip to main content

iqa-mcp

PyPI License self-test

The IQA attestation primitives — derived intent addressing and AE-128 envelope verification — exposed as Model Context Protocol tools, so any MCP agent (Claude Desktop, Cline, your own client, an Uber-style MCP Gateway) can verify trust offline, fail-closed.

A thin, stateless wrapper around the published iqa-org 1.3.1 reference implementation. No network. No accounts. No key storage. No state.

PyPI · iqa-mcp · Apache-2.0 Spec · draft-li-rttp-iqa-addressing — Independent Submission, in review Landing page · iqa.org/MCP/


Why

Agent platforms are converging on MCP as the tool-calling layer, at industrial scale. What none of them standardize is trust semantics: what intent is being addressed, and whether the counterparty holds standing — verifiable without a network call. These four tools make that layer native to any MCP agent.

Install

Requires Python ≥ 3.11.

# from PyPI — installs the `iqa-mcp` console command
pip install iqa-mcp

# or run from source
pip install "iqa-org>=1.3.1" "mcp>=2"
python server.py            # stdio transport

MCP client configuration (Claude Desktop / Cline style):

{
  "mcpServers": {
    "iqa": {
      "command": "iqa-mcp"
    }
  }
}

(From source, use "command": "python", "args": ["/path/to/server.py"] instead.)


Tools

Tool Input Returns Key needed
derive_route_shard authority string SHA-256(authority)[0:16] hex — the derived, action-independent intent address no
parse_envelope AE-128 frame hex structural decode: version, lease, shard, organ, nonce, standing — fails closed on every layout rule no
verify_envelope frame hex + organ key full verification: constant-time HMAC-SHA256 over the whole 128-byte frame (attestation zeroed) + lease check. REJECT is a result, not an error yes (caller-supplied)
published_vector — the published AE128-VECTOR-1 (authority, test key, frame hex — see iqa-org) for byte-for-byte self-test —

Try it in thirty seconds

published_vector            -> AE128-VECTOR-1: authority + test key + frame hex
parse_envelope(frame)       -> standing radiant · nonce 1 · lease unexpired
verify_envelope(frame, key) -> PASS
flip one byte of standing   -> REJECT (HMAC mismatch)

That last line is the point: tampering is not detected by anyone watching — the frame simply stops verifying, offline, for any verifier, forever.

Self-test

python test_mcp.py
# [PASS] 1 · list_tools        -> 4 tools
# [PASS] 2 · derive_route_shard -> 5c378581f92754d0bc88adaed84b7c5a
# [PASS] 3 · published_vector   -> f3b2a1c4.pillar.example
# [PASS] 4 · parse_envelope     -> standing radiant
# [PASS] 5 · verify_envelope    -> [PASS] radiant · nonce 1
# [PASS] 6 · tampered frame     -> REJECT (HMAC mismatch)
# [PASS] 7 · malformed hex      -> REJECT
# ALL 7/7 PASS

Design invariants

Inherited from the schemes:

  • Zero-parser — fixed offsets, no TLV, no heap-shaped parsing.
  • Fail-closed — malformed input is a REJECT result, never a normalised partial answer.
  • Offline — verification needs the frame, the key, and a hash function. Nothing else.
  • Stateless — the server stores nothing; the organ key is passed per call by the client and never persisted.

What this is not

Stated plainly, because evidence tooling that oversells is just marketing:

  • Not real-time governance. Gateways and policy engines decide in the moment; this server proves after the fact. The two compose; neither replaces the other.
  • Not a delegation scheme. v1.3.x intentionally specifies no delegation semantics — see the draft's honest-boundary notes.
  • Not a key custodian. The organ key never touches this server's state; verification is caller-supplied, per call. Never pass a production organ key through a host you do not control — whoever sees the key holds the verification power.
  • Not a benchmark. The demos at iqa.org execute real WebCrypto in the browser; this server wraps the same published primitives.

Status

  • Published on PyPI: https://pypi.org/project/iqa-mcp/ — current version in the badge above.
  • Transport: stdio. A hosted streamable-HTTP endpoint is under consideration; the tools are stateless, so hosting adds no custody.
  • Underlying schemes: iqa-org 1.3.1 (PyPI / npm / crates.io — four registries, byte-exact vectors, offline self-test).
  • Specification: draft-li-rttp-iqa-addressing — Independent Submission, in review.

Sister repositories

  • iqa-org — the reference implementation (addressing, envelope, verification).
  • rttp — the addressing scheme: design notes and open questions.
  • Organization discussions — start-here map and cross-repo threads.

Public record

Everything this tool wraps is public and checkable — no asking us:


License

Apache-2.0 — © RTTP & IQA Organization

Metadata

Release files for iqa-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iqa-mcp 1.0.0
File Size Uploaded
iqa_mcp-1.0.0.tar.gz 9.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iqa-mcp 1.0.0
File Interpreter ABI Platform
iqa_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.9 kB

Release files / iqa_mcp-1.0.0.tar.gz

Download URL iqa_mcp-1.0.0.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
bbc5f3872c02fa038c119d621b3e7d7598153cbd342650121a4a0ef42ab74bcd
BLAKE2b-256 checksum
How to use checksums
c48b118ed2158625e39e439bf05adbec8002d92d8836f02c1a159cfa2d913cee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / iqa_mcp-1.0.0-py3-none-any.whl

Download URL iqa_mcp-1.0.0-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c09b5c6f0d91489af188b5ed00804a37f4fd0855893389fd6c32172eba6826d1
BLAKE2b-256 checksum
How to use checksums
7035e7da3e61e20059234a37820c54d3001166fb568ded96cab51f5ec85872ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release history Release notifications | RSS feed

1.0.2

2 release files

1.0.1

2 release files

This release

1.0.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page