Skip to main content

iqa-mcp

PyPI License self-test M8ven Score

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

# launcher equivalents — same `iqa-mcp` command, they fetch and wrap the Python package above
npm install -g iqa-mcp        # or run once: npx iqa-mcp
cargo install iqa-mcp

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

All three install paths end at the same iqa-mcp command; the MCP client configuration below works unchanged for any of them.

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

# installed from PyPI — runs against the iqa-mcp console script
python -m test_mcp

# or from a source checkout — runs against ./server.py
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.2

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.2
File Size Uploaded
iqa_mcp-1.0.2.tar.gz 11.5 kB Details

Built distribution (wheel)

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

Total release size: 24.0 kB

Release files / iqa_mcp-1.0.2.tar.gz

Download URL iqa_mcp-1.0.2.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a504687562f39320edbb1880718a5962c3b8527619725db9f173866a02caf738
BLAKE2b-256 checksum
How to use checksums
3f79bfd9d2b7af52e2e0d23f70bdbf73b26391f71b5e61f639fa2c7182d110aa
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.2-py3-none-any.whl

Download URL iqa_mcp-1.0.2-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c518c657a12ec2cc09cc1d863688274d599a2b28cc12cec3a6181009dc6eaf00
BLAKE2b-256 checksum
How to use checksums
4219866c863ef8efd1328bf3cce07e88d36af7fbfe241c9bd196155c69e8d869
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

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

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