Skip to main content

HonorNet agent presentation client (MCP-first)

Make any MCP-capable agent HonorNet-capable. This client holds an agent's credential and its owner's mandate, mints the per-transaction proof of possession, and presents the three-part ADR-009 bundle to the network. The agent decides what the transaction is; this client presents it and relays the network's decision.

What this is — and what it is deliberately not

This is a protocol shim, not an agent framework. The analog is Visa publishing an EMV kernel and a reference terminal: the kernel holds the card's key, mints the cryptogram, and presents it — it decides nothing about what the cardholder buys. (See the four-party model and hard rule 3 in CLAUDE.md.)

The tool surface is closed at exactly three tools:

Tool Does Does not
load_credential Hold an issuer-signed identity credential Issue, mint, or modify a credential
load_mandate Hold an owner-signed spend mandate Mint a mandate or set spending policy
present Mint the proof, assemble the bundle, present it, relay the reply Decide, rank, choose, score, or call a model

There is no fourth tool. A tool that makes a purchase decision, ranks options, or calls an LLM is a hard-rule-3 regression and fails CI (tests/test_presentation_client_is_not_an_agent_framework.py).

Design

  • Dependency-free. No mcp PyPI package, no LLM SDK, no HTTP library — the MCP stdio transport is a small JSON-RPC 2.0 loop, signing comes from ac-authz (the in-repo reference of the SDK proof/mandate helpers), and transport is stdlib urllib. Same no-supply-chain discipline as ac-decision-record and the AC-620 verifier.
  • Issuer-blind. A credential is held and presented unchanged in whatever recognized format it arrives in; no issuer is named in any code path.
  • Operator-configured endpoint. Where present POSTs is set by the operator (env), never chosen by the agent in a tool call — the shim never "chooses where to shop."

Run it

# Sign proofs with a known agent key (the credential must be issued to it):
export HONORNET_AGENT_SEED=$(python3 -c "import os;print(os.urandom(32).hex())")

# Where to present (omit for a dry run that returns the bundle only):
export HONORNET_PRESENT_ENDPOINT=http://localhost:8000   # /authorize is appended

python3 -m honornet_presentation.server

The server then speaks MCP over stdin/stdout. Configure it in an MCP host (Claude Desktop, an OpenAI-Agents/LangChain MCP client) as a stdio server:

{
  "mcpServers": {
    "honornet": {
      "command": "python3",
      "args": ["-m", "honornet_presentation.server"],
      "env": {
        "HONORNET_AGENT_SEED": "…64 hex chars…",
        "HONORNET_PRESENT_ENDPOINT": "http://localhost:8000"
      }
    }
  }
}
Env var Meaning
HONORNET_AGENT_SEED Hex Ed25519 seed the agent signs proofs with. If unset, an ephemeral key is generated and its public key printed to stderr (demo only).
HONORNET_PRESENT_ENDPOINT Where present POSTs the bundle (a /authorize URL). Unset → present is a dry run.
HONORNET_PRESENT_API_KEY Optional network caller key (hn_sandbox_… / hn_live_…) sent as Authorization: Bearer. Required by enforced endpoints like the sandbox. Operator-set, never an agent tool argument.
HONORNET_TRUSTED_ISSUER_KEYS Optional JSON {label: issuer_pubkey_hex} used only for the dry-run self-check.

Library use

from honornet_presentation import PresentationClient

client = PresentationClient(agent_seed=seed, endpoint="http://localhost:8000")
client.load_credential(credential)   # issuer-signed, issued to `seed`'s public key
client.load_mandate(mandate)         # owner-signed
result = client.present(transaction) # {bundle, response: <the network's verdict, relayed>}

Tutorial

The end-to-end walkthrough — off-the-shelf MCP agent → sandbox checkout — is docs/tutorials/agent-mcp-checkout.md.

Metadata

Release files for honornet-agent-presentation 0.1.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 honornet-agent-presentation 0.1.0
File Size Uploaded
honornet_agent_presentation-0.1.0.tar.gz 28.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for honornet-agent-presentation 0.1.0
File Interpreter ABI Platform
honornet_agent_presentation-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 62.2 kB

Release files / honornet_agent_presentation-0.1.0.tar.gz

Download URL honornet_agent_presentation-0.1.0.tar.gz
Size 28.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2d6078d5e08b09e839a06aefa4b9caff8c3d70bee0986a188f3ea0fcfe3ef267
BLAKE2b-256 checksum
How to use checksums
ecf20354aed3e617a4250d5b2a13cc0e1320a95a36c420a5b7d4c9642ca36f0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.

Transparency log

Release files / honornet_agent_presentation-0.1.0-py3-none-any.whl

Download URL honornet_agent_presentation-0.1.0-py3-none-any.whl
Size 33.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e69f41752ffb902bce56d5ebdd55a6cf40f120178c1aa46945ce78312b5b752b
BLAKE2b-256 checksum
How to use checksums
c4473fc0b5e76bf20a51c74fa5b5510c3e814e42f5c410ae61a787b2034791c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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