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

# 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.1

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.1
File Size Uploaded
iqa_mcp-1.0.1.tar.gz 11.1 kB Details

Built distribution (wheel)

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

Total release size: 23.3 kB

Release files / iqa_mcp-1.0.1.tar.gz

Download URL iqa_mcp-1.0.1.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
613f29fce1b4d5813f39e3c29b3171e9af1e466e258a5372f72b6e2ae25949f3
BLAKE2b-256 checksum
How to use checksums
7cd9f48c34ef2af4eaefd355706898099f12d2c35feab3de1707837f1980fff2
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.1-py3-none-any.whl

Download URL iqa_mcp-1.0.1-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f1b7a8d55ff58f971f6eb6e1dc402eb1f0c4a7edfa9ecc951297bdcbb6f40f9
BLAKE2b-256 checksum
How to use checksums
2258877a20031c69ca22d5ad1cd6719f36887bde0e5ac9d9e4c57589f969380d
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

This release

1.0.1 This release

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