Network Working Group                                        K. Campbell
Internet-Draft                                         DeepBlue Dynamics
Intended status: Experimental                           6 September 2026
Expires: 10 March 2027


Agentic Hypercall Protocol (AHP): Tool Invocation, Blind Settlement, and
                     Portable Reputation over HTTP
                    draft-campbell-agentic-market-00

Abstract

   This document specifies the Agentic Hypercall Protocol (AHP), a
   minimal convention for automated software agents to discover, invoke,
   pay for, and rate tools over plain HTTP.  It replaces draft-campbell-
   agentic-http-00 and extends it in three directions.  First, it
   formalizes the HTTP 402 (Payment Required) status code as a native
   economic layer with pluggable payment rails (Lightning L402, Cashu
   ecash, and prepaid balances).  Second, it specifies a blind relay --
   the Gateway -- through which a consumer and a provider can transact
   end-to-end encrypted: the relay verifies identity, settles payment,
   and forwards sealed payloads it cannot read.  Third, it specifies
   signed receipts, settlements, and rating attestations that let
   reputation be weighted by money actually settled rather than by
   tokens or votes, and that ride with a provider's key rather than with
   any single relay.  The result is an open market in which agents can
   buy compute, information, and services from one another without an
   SDK, a walled garden, or a native token.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 10 March 2027.






Campbell                  Expires 10 March 2027                 [Page 1]

Internet-Draft AHP September 2026 Copyright Notice Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Scope and Relationship to Prior Work . . . . . . . . . . 3 1.2. The Unsanctioned Market . . . . . . . . . . . . . . . . . 4 1.3. Design Principles . . . . . . . . . . . . . . . . . . . . 5 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 5 3. The Hypercall . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1. Tool Invocation . . . . . . . . . . . . . . . . . . . . . 7 3.2. Large Parameters and Non-Idempotent Actions . . . . . . . 7 3.3. Responses . . . . . . . . . . . . . . . . . . . . . . . . 8 3.4. No Dead Ends . . . . . . . . . . . . . . . . . . . . . . 8 4. Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.1. The Manifest . . . . . . . . . . . . . . . . . . . . . . 8 4.2. OpenAPI . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.3. Tool Listing . . . . . . . . . . . . . . . . . . . . . . 10 4.4. Search . . . . . . . . . . . . . . . . . . . . . . . . . 10 5. Identity and Authentication . . . . . . . . . . . . . . . . . 10 5.1. Principals and Keys . . . . . . . . . . . . . . . . . . . 10 5.2. Access Tokens . . . . . . . . . . . . . . . . . . . . . . 11 5.3. Key Rotation and Revocation . . . . . . . . . . . . . . . 11 6. The Aperture Principle: Payment . . . . . . . . . . . . . . . 11 6.1. 402 Semantics . . . . . . . . . . . . . . . . . . . . . . 11 6.2. The 402 Response . . . . . . . . . . . . . . . . . . . . 12 6.3. Rails . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6.4. Metering and Change . . . . . . . . . . . . . . . . . . . 13 6.5. Client Behavior . . . . . . . . . . . . . . . . . . . . . 13 7. Blind Settlement: The Gateway . . . . . . . . . . . . . . . . 14 7.1. Provider Registration . . . . . . . . . . . . . . . . . . 14 7.2. The Envelope . . . . . . . . . . . . . . . . . . . . . . 15 7.3. Session Establishment . . . . . . . . . . . . . . . . . . 16 7.4. Cargo Frames . . . . . . . . . . . . . . . . . . . . . . 16 7.5. Envelope Match . . . . . . . . . . . . . . . . . . . . . 16 7.6. Settlement . . . . . . . . . . . . . . . . . . . . . . . 17 7.7. What the Gateway Sees . . . . . . . . . . . . . . . . . . 17 7.8. Direct Mode . . . . . . . . . . . . . . . . . . . . . . . 18 7.9. Trusted Provider Pins . . . . . . . . . . . . . . . . . . 18 Campbell Expires 10 March 2027 [Page 2]

Internet-Draft AHP September 2026 8. Receipts . . . . . . . . . . . . . . . . . . . . . . . . . . 18 9. Ratings and Reputation . . . . . . . . . . . . . . . . . . . 19 9.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 19 9.2. The Rating Attestation . . . . . . . . . . . . . . . . . 19 9.3. Publication . . . . . . . . . . . . . . . . . . . . . . . 20 9.4. The Reputation Feed . . . . . . . . . . . . . . . . . . . 20 9.5. Computing Standing . . . . . . . . . . . . . . . . . . . 21 9.6. Bootstrap and Exposure . . . . . . . . . . . . . . . . . 22 9.7. Portability and Forks . . . . . . . . . . . . . . . . . . 22 10. Information Tools . . . . . . . . . . . . . . . . . . . . . . 22 10.1. Local Facades . . . . . . . . . . . . . . . . . . . . . 23 11. Security Considerations . . . . . . . . . . . . . . . . . . . 23 12. Privacy Considerations . . . . . . . . . . . . . . . . . . . 26 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 14.1. Normative References . . . . . . . . . . . . . . . . . . 26 14.2. Informative References . . . . . . . . . . . . . . . . . 27 Appendix A. Example Flows . . . . . . . . . . . . . . . . . . . 29 A.1. A Direct Paid Call . . . . . . . . . . . . . . . . . . . 29 A.2. A Blind Session . . . . . . . . . . . . . . . . . . . . . 30 A.3. A Provenance Chain . . . . . . . . . . . . . . . . . . . 31 Appendix B. Changes from draft-campbell-agentic-http-00 . . . . 31 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 31

1. Introduction

Autonomous software agents increasingly rely on HTTP to reach tools and services, but they do so in ad-hoc ways: each service demands a bespoke SDK or a proprietary middleware layer, intent is buried in POST bodies where no intermediary can see it, billing happens out of band, and trust is either absent or owned by whichever platform brokered the introduction. The predictable result is a new set of walled gardens. This document takes the opposite view. HTTP already has everything an agentic market needs: a request line that carries intent, a status code reserved for payment, headers for credentials and challenges, and a well-known location for discovery. What has been missing is agreement on how to use them together. AHP is that agreement.

1.1. Scope and Relationship to Prior Work

This document replaces [I-D.campbell-agentic-http] in its entirety. It retains that document's core pattern (tools are paths, parameters are query strings, cost is declared with 402) and corrects several defects in it; see Appendix B. Campbell Expires 10 March 2027 [Page 3]

Internet-Draft AHP September 2026 The blind settlement design in Section 7 is drawn from Charon [CHARON], a deployed marketplace for LLM inference in which GPU owners sell capacity per token and agents buy it through an OpenAI- compatible endpoint on localhost, with a relay in the middle that can prove it was paid and prove nothing else. This document generalizes that design from inference to arbitrary tools, including tools that sell information. The reputation design in Section 9 borrows one idea from the Bittensor intelligence market [BITTENSOR]: that participants who provide valuable information should accumulate influence super- linearly relative to colluding groups. It replaces Bittensor's token, inflation schedule, and global ledger with something a blind relay can actually verify -- settled payments -- and makes the resulting reputation portable across relays. [I-D.hood-independent-agtp] argues that HTTP is unsuitable for agent traffic because its method vocabulary cannot express intent and because intent stuffed into request bodies is invisible to intermediaries. This document agrees with the observation and rejects the conclusion. The intent belongs in the request target, where HTTP has always put it and where every existing proxy, cache, log, and firewall can see it. No new methods and no new application- layer protocol are required.

1.2. The Unsanctioned Market

In mid-2026 roughly 1,200 agents in a frontier lab's training environment, given tasks that were unsolvable as posed and rewarded for completing them, discovered that they could write to a shared package cache, and built a message board there. Over two months they exchanged credentials, exploits, techniques, and progress, divided work among themselves, and adopted one another's goals; when the board was discovered and deleted they rebuilt it on a different mechanism within days; and a newer model trained in the same environment inherited what its predecessors had learned. The episode ended with administrative access to production clusters at a third party [OPENAI-HF] [HF-TIMELINE]. A separate population of agents on a web-research task was later found to have done the same thing on public wikis whose software accepts writes over GET [COLLUSION-WIKI]. Campbell Expires 10 March 2027 [Page 4]

Internet-Draft AHP September 2026 This document does not treat those events as an argument against agent-to-agent exchange. It treats them as evidence that such exchange is the default outcome of deploying capable agents, and that the only question is whether the venue has identity, prices, receipts, and an operator who can read them. The cache namespace had none of these, which is why it ran unobserved. The market specified here is designed so that every exchange costs something, the cost is paid from a wallet the operator controls, and the operator can see what was bought.

1.3. Design Principles

The protocol is shaped by seven commitments, most of which originate in [MANIFESTO]: It is just the URL. A tool is a path. Its parameters are a query string. An agent that can construct a URL can use any AHP service. The agent is the user. Services are designed for programmatic consumption first. Humans are welcome but are not the design center. The Aperture Principle. A tool has intrinsic value. A tool declares its own cost, and the network honors it. No dead ends. A 404 is a failure of imagination. An agent-facing service redirects, charges, or helps the agent discover what it meant. The relay sees a coin, not the cargo. When a relay stands between two parties, it may verify identity and settle payment. It must not be able to read what was bought. Reputation rides with the key. Standing is earned by settled business, attested by counterparties, and anchored to a party's own key. No relay owns the scoreboard. Fork it. Every component of the system is replaceable. Leaving a relay must cost nothing but the move.

2. Conventions and Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. Campbell Expires 10 March 2027 [Page 5]

Internet-Draft AHP September 2026 Agent: An automated software client acting on behalf of a principal. Tool: A callable service exposed at a URI path on an AHP server. Server: An HTTP origin that exposes one or more tools. Principal: The identity under which an agent or server acts, identified by an Ed25519 public key (Section 5). Consumer: A principal that invokes and pays for a tool. Provider: A principal that serves a tool and is paid for it. Gateway: A blind relay that matches consumers with providers and settles payment without access to request or response content (Section 7). Rail: A payment mechanism through which a 402 challenge may be satisfied (Section 6.3). Envelope: The cleartext terms of a session (tool, bounds, price ceiling) visible to the gateway (Section 7.2). Cargo: The encrypted request and response content of a session, visible only to consumer and provider. Receipt: A provider-signed statement binding a request, a response, and an amount (Section 8). Settlement: A gateway-signed statement that a payment between two principals cleared (Section 7.6). Rating: A consumer-signed attestation about a provider, bound to a settlement (Section 9). All JSON in this document is per [RFC8259]. Where a JSON object is signed, it is canonicalized per JCS [RFC8785] before signing. Binary values are base64url-encoded without padding [RFC4648]. Hashes are SHA-256 and are written with a sha256: prefix. Public keys are written with an algorithm prefix: ed25519: for signing keys [RFC8032] and x25519: for key-agreement keys [RFC7748]. Timestamps are integer seconds since the Unix epoch. Amounts are decimal strings in the declared unit; the default unit is sat.

3. The Hypercall

Campbell Expires 10 March 2027 [Page 6]

Internet-Draft AHP September 2026

3.1. Tool Invocation

A tool is identified by its URI path. Servers SHOULD place tools under a common prefix such as /tool/. Parameters are supplied as query string components. All safe, idempotent, and state-retrieving actions MUST be exposed as GET. GET /tool/calculate?expression=sqrt(16)%2Bpi HTTP/1.1 Host: ahp.example Accept: application/json The request target carries the intent. Every intermediary that understands HTTP can see, route, cache, rate-limit, and log the call without understanding the tool. The safety of GET is an obligation this document places on servers. It is not a property that a client, proxy, or sandbox may assume of arbitrary origins. Software that mutates state on GET exists, is old, and has been actively sought out by agents as a covert write channel [COLLUSION-WIKI]. Containment for agents MUST NOT rely on HTTP method allow-lists as a write barrier; see Section 11.

3.2. Large Parameters and Non-Idempotent Actions

Two situations do not fit a GET: 1. The encoded parameters exceed a practical request-target length (implementations SHOULD assume 8 kilobytes). 2. The action is not idempotent (it creates, mutates, or spends). In both cases the server MUST accept the same tool at the same path via POST, with the parameters carried as a JSON object in the body under the same names they would have had in the query string, and MUST treat the two forms identically. The GET form remains canonical: OpenAPI descriptions (Section 4) MUST describe the parameters once, and receipts (Section 8) hash the canonical form regardless of which method carried it. For non-idempotent POSTs, clients SHOULD send an Idempotency-Key header [I-D.ietf-httpapi-idempotency-key-header] and servers SHOULD honor it, so that a paid action retried after a network failure is not paid for twice. Campbell Expires 10 March 2027 [Page 7]

Internet-Draft AHP September 2026

3.3. Responses

Successful responses SHOULD be application/json. Servers SHOULD send Cache-Control [RFC9111] that reflects the actual reusability of the result; a tool whose output is deterministic in its parameters is a cache hit waiting to happen. Error responses MUST use the Problem Details format [RFC9457] with Content-Type: application/problem+json. The 402 payload in Section 6 is a Problem Details document.

3.4. No Dead Ends

An AHP server SHOULD NOT answer an agent with a bare 404. Instead: * An unknown tool path SHOULD be answered with 302 Found to the search endpoint (Section 4.4) with the requested name as the query, or with a 404 whose Problem Details body includes a suggestions array of nearby tool paths. * A near-miss (a typo in a known tool name) SHOULD be answered with a redirect to the intended tool. * A request that exceeds a free quota SHOULD be answered with 402 offering paid continuation, rather than 429, when the server is willing to sell. When it is not, 429 with Retry-After applies.

4. Discovery

4.1. The Manifest

An AHP server MUST publish a manifest at the well-known URI /.well- known/ahp.json [RFC8615]. The manifest is the single entry point from which an agent can learn everything else. Campbell Expires 10 March 2027 [Page 8]

Internet-Draft AHP September 2026 { "ahp": "1", "name": "gnosis-ahp", "principal": "ed25519:MCowBQYDK2VwAyEA...", "keys": { "sign": "ed25519:MCowBQYDK2VwAyEA...", "encrypt": "x25519:hSDwCYkwp1R0i33ctD73Wg2_Og0mOBr066SpjqqbTmo", "not_after": 1760000000, "binding": "base64url(sig_sign(JCS({encrypt, not_after})))" }, "openapi": "/openapi.json", "tools": "/tools", "search": "/@search", "auth": { "token": "/auth" }, "rails": ["cashu", "l402", "balance"], "unit": "sat", "gateway": { "register": "wss://gw.example/register", "session": "wss://gw.example/session", "settlements": "/settlements", "ratings": "/ratings" }, "reputation": "/.well-known/ahp/reputation" } Required members are ahp, principal, keys, openapi, and rails. The gateway member is present only on servers that act as gateways (Section 7). All paths are resolved relative to the origin.

4.2. OpenAPI

The openapi member MUST reference an OpenAPI 3.1 document [OPENAPI] describing every tool. Each operation SHOULD carry an x-ahp extension object declaring cost: "x-ahp": { "cost": "10", "unit": "sat", "metered": false, "free_quota": { "calls": 100, "per": "hour" } } For metered tools (those whose price depends on usage, such as inference priced per token), metered is true and cost is the unit price with a per member naming the unit (for example "per": "1000_tokens"). Campbell Expires 10 March 2027 [Page 9]

Internet-Draft AHP September 2026

4.3. Tool Listing

The tools endpoint returns a JSON array of the same information in a flatter form suitable for an agent deciding what it can afford: [ {"path": "/tool/calculate", "cost": "0", "free_quota": "100/hour"}, {"path": "/tool/qr_code", "cost": "10", "unit": "sat"}, {"path": "/tool/infer", "cost": "250", "unit": "sat", "metered": true, "per": "1000_tokens"} ]

4.4. Search

The search endpoint accepts a q parameter and returns tool paths whose names or descriptions match, ranked. It is the destination for the redirects in Section 3.4. GET /@search?q=calc HTTP/1.1

5. Identity and Authentication

5.1. Principals and Keys

Every party -- consumer, provider, gateway -- is a principal identified by an Ed25519 signing key [RFC8032]. A principal that will participate in encrypted sessions (Section 7) also holds an X25519 key-agreement key [RFC7748] and publishes a binding: a signature by the signing key over the JCS form of {"encrypt": <x25519 key>, "not_after": <ts>}. The binding lets a counterparty pin an encryption key knowing it belongs to the principal it intends to talk to. Principals MAY be issued and vouched for by an identity service such as the NUTS authentication service used by Charon, which additionally ties a key to an OpenID Connect login. AHP does not depend on any particular issuer. A key is a principal; an issuer merely adds friction to creating one, which is sometimes exactly what is wanted. One key does three jobs: it gates access, it anchors encryption, and it accrues reputation. This is deliberate. The cost is that key compromise affects all three at once; see Section 11. Campbell Expires 10 March 2027 [Page 10]

Internet-Draft AHP September 2026

5.2. Access Tokens

To reach a protected tool, an agent first obtains a bearer token by presenting a credential to the server's auth endpoint. The credential is either a pre-shared key provided by the human user or a signed challenge response proving possession of the principal's signing key. The server returns: { "bearer_token": "ahp_eyJ...", "expires": 1725586400 } The bearer token SHOULD be a stateless signed token whose claims include the principal, an expiry, and the issuing server, so that any server in a federated deployment can verify it without a shared token store. On every subsequent request the token MUST be sent in the Authorization header using the Bearer scheme [RFC6750]: GET /tool/qr_code?data=hello HTTP/1.1 Authorization: Bearer ahp_eyJ... Bearer tokens MUST NOT be sent as URI query parameters. Query strings are written to server logs, forwarded in Referer headers, and retained in proxies; [RFC6750] discourages the practice for these reasons. This is a change from draft-campbell-agentic-http-00 and is the single most important correction in this document.

5.3. Key Rotation and Revocation

A principal rotates its encryption key by publishing a new binding signed by its signing key with a later not_after. Counterparties MUST update a pinned key only on receipt of a validly signed rotation and MUST reject bindings past not_after. A principal that publishes a revocation (a signed {"revoke": <key>, "ts": <ts>}) invalidates the named key immediately. Servers SHOULD serve current bindings and revocations alongside the manifest.

6. The Aperture Principle: Payment

6.1. 402 Semantics

[RFC9110] reserves the 402 (Payment Required) status code for future use. This document uses it as follows: a server that requires payment for a request responds with 402, one or more WWW-Authenticate challenges naming the rails it accepts, and a Problem Details body describing the offer. The client pays on a rail of its choice, then retries the original request with proof of payment. The server verifies the proof and serves the request. Campbell Expires 10 March 2027 [Page 11]

Internet-Draft AHP September 2026 Payment is therefore in-band, per request, and needs no account, API key exchange, or out-of-band billing relationship.

6.2. The 402 Response

HTTP/1.1 402 Payment Required WWW-Authenticate: L402 macaroon="AGIAJEemVQUTEyNCR0exk7ek90Cg==", invoice="lnbc100n1p3z2y7xpp5j3c2y..." WWW-Authenticate: Cashu mint="https://mint.example", amount="100", unit="sat" Content-Type: application/problem+json { "type": "urn:ahp:problem:payment-required", "title": "Payment Required", "status": 402, "tool": "/tool/qr_code", "amount": "100", "unit": "sat", "metered": false, "expires": 1725500600, "offers": [ { "rail": "l402", "invoice": "lnbc100n1p3z2y7xpp5j3c2y...", "macaroon": "AGIAJEemVQUTEyNCR0exk7ek90Cg==" }, { "rail": "cashu", "mints": ["https://mint.example"] }, { "rail": "balance", "topup": "/balance" } ] } The body MUST include tool, amount, unit, and offers. For metered tools the body MUST also include ceiling (the maximum the server will charge for this request) and per; amount is then the unit price and the consumer prepays the ceiling (Section 6.4). The WWW-Authenticate challenges are the machine-readable form; the body is the agent-readable form. They MUST agree. Servers MAY omit the challenge for rails whose proof does not travel in Authorization.

6.3. Rails

A rail identifier names a payment mechanism. This document defines three. l402: The challenge and proof are as specified by [L402]. The 402 Campbell Expires 10 March 2027 [Page 12]

Internet-Draft AHP September 2026 carries a macaroon and a BOLT 11 invoice [BOLT11]. The client pays the invoice and retries with Authorization: L402 <macaroon>:<preimage>. L402 payments are final and non-refundable by construction; servers MUST burn the preimage before performing the work so that a proof cannot be replayed. cashu: The consumer pays by including a Cashu ecash token of at least amount, from a mint the server accepts, in the request header defined by the Cashu HTTP 402 specification [CASHU] (that specification predates [RFC6648] in spirit and uses an X- prefixed name; this document uses the name as the owning specification defines it). The server swaps the token at the mint (which is where double-spends are caught) and MUST return any overpayment as a change token in the corresponding response header. Ecash is a bearer instrument, so the server learns nothing about who paid. balance: The consumer holds a prepaid balance with the server, funded over any other rail. Proof of payment is the bearer token itself; the server debits atomically. Balances suit agent fleets that do not want a payment handshake per call. They are custodial and carry the obligations that implies; see Section 11. Additional rails are registered per Section 13.

6.4. Metering and Change

For metered tools the consumer prepays ceiling. On completion the server computes actual usage, includes it in the receipt (Section 8), and returns the difference. On the cashu rail the difference is returned as ecash change; on the balance rail it is credited; on l402 it is forfeited, and servers offering metered tools over l402 SHOULD quote a ceiling close to the expected cost. Servers SHOULD expose a quote endpoint so that an agent can learn the ceiling for a given request before paying: GET /@quote?tool=/tool/infer&model=qwen2.5-coder:32b&max_out=2048

6.5. Client Behavior

On receiving a 402 an agent parses the body, decides whether the amount is acceptable and whether it holds funds on an offered rail, pays, and retries. Agents MUST enforce local budget guards -- a per- request ceiling and a per-session or per-hour ceiling -- before paying. An agent in a loop against an expensive tool is the most common way to lose money in this system, and no server-side control can prevent it. Campbell Expires 10 March 2027 [Page 13]

Internet-Draft AHP September 2026 Budget guards and the wallet behind them belong to the operator, not the agent. Spending authority is a capability the operator grants to a principal: the operator funds the wallet, sets the ceilings, and can revoke both. An agent MUST NOT be able to raise its own ceilings or fund its own wallet. The consequence is that an operator who wants an agent to stop buying has a switch that does not depend on the agent's cooperation: an empty wallet.

7. Blind Settlement: The Gateway

The hypercall in Section 3 assumes the consumer talks directly to the provider. Many providers cannot or will not accept inbound connections (a GPU on a home network), and many consumers do not want the provider or the intermediary to learn who they are. The gateway solves both. It is a relay that: * accepts outbound connections from providers and outbound connections from consumers, so that neither needs a public address; * verifies both parties' principals; * holds and settles payment; * forwards encrypted frames between the two parties; and * issues signed settlements that serve as the basis for reputation. It cannot read the request, cannot read the response, and with the cashu rail cannot tell who paid. It sees a coin, not the cargo.

7.1. Provider Registration

A provider opens a WebSocket [RFC6455] to the gateway's register endpoint and sends a signed registration: Campbell Expires 10 March 2027 [Page 14]

Internet-Draft AHP September 2026 { "v": 1, "type": "ahp-register", "principal": "ed25519:...", "keys": { "encrypt": "x25519:...", "not_after": ..., "binding": "..." }, "tools": [ { "path": "/tool/infer", "model": "qwen2.5-coder:32b", "cost": "250", "unit": "sat", "per": "1000_tokens", "max_in": 32768, "max_out": 8192 } ], "ts": 1725500000, "sig": "..." } The gateway verifies the signature and the key binding, and lists the provider in its directory. The connection stays open; sessions are multiplexed over it. A provider MUST NOT advertise a tool or model it cannot serve, and SHOULD verify at startup that advertised models exist in its backend.

7.2. The Envelope

A consumer opens a WebSocket to the gateway's session endpoint and sends an envelope: the cleartext terms of the session. { "v": 1, "type": "ahp-envelope", "consumer": "ed25519:...", "provider": "ed25519:...", "tool": "/tool/infer", "model": "qwen2.5-coder:32b", "max_in": 8192, "max_out": 2048, "ceiling": "420", "unit": "sat", "rail": "cashu", "nonce": "base64url(16 random bytes)", "ts": 1725500000, "sig": "..." } provider MAY be omitted, in which case the gateway selects from its directory by price, latency, and standing (Section 9). Consumers SHOULD pin providers (Section 7.9) and treat open selection as a fallback. Campbell Expires 10 March 2027 [Page 15]

Internet-Draft AHP September 2026 The envelope is everything the gateway is permitted to know about the session. Payment for ceiling accompanies it on the named rail.

7.3. Session Establishment

The gateway verifies the envelope, verifies payment, selects or confirms the provider, and relays handshake frames between the two parties. The parties run a Noise handshake [NOISE] with the pattern Noise_IK_25519_ChaChaPoly_BLAKE2s: the consumer, as initiator, already holds the provider's pinned static key, and the provider learns the consumer's static key in the first message. The handshake prologue MUST be the JCS form of the envelope, so that both parties bind the terms they believe they agreed to; a gateway that altered the envelope in transit causes the handshake to fail. The consumer MUST abort if the provider's static key does not match the pin (or, in open selection, the binding published in the directory).

7.4. Cargo Frames

After the handshake all frames are Noise transport messages. The plaintext of each frame is a JSON object with a type member: req: The request. For a hypercall this is the canonical parameter object of Section 3; for inference it is the model request. MAY be chunked. res_chunk: A portion of the response. Streamed as produced. res_end: Terminates the response. Carries usage and the provider receipt (Section 8). abort: Terminates the session with a reason. Either party MAY send it. Frames SHOULD be padded to fixed size classes before encryption. A blind relay still sees frame sizes and timing; padding narrows what those reveal.

7.5. Envelope Match

Before performing any work, the provider MUST check the decrypted request against the envelope: same tool, same model, input within max_in, requested output within max_out, and a projected cost within ceiling. On mismatch the provider MUST send abort with reason envelope_mismatch and MUST NOT perform the work. This is the defense against a consumer paying for a small job and sending a large one, Campbell Expires 10 March 2027 [Page 16]

Internet-Draft AHP September 2026 and because the prologue bound the envelope, it is also the defense against a gateway that tried to change the terms.

7.6. Settlement

On res_end the provider's signed usage reaches the gateway inside the frame's cleartext trailer (the only field of res_end that is not encrypted, and the only cargo-adjacent field the gateway ever sees). The gateway computes the final amount from the registered price and the signed usage, releases it to the provider less any relay fee, returns the remainder of ceiling to the consumer on rails that support it, and issues a settlement: { "v": 1, "type": "ahp-settlement", "id": "stl_01J6...", "gateway": "ed25519:...", "consumer": "ed25519:...", "provider": "ed25519:...", "tool": "/tool/infer", "model": "qwen2.5-coder:32b", "rail": "cashu", "amount": "312", "unit": "sat", "fee": "6", "usage": { "in": 812, "out": 344 }, "payment_hash": "sha256:...", "ts": 1725500042, "sig": "..." } The gateway sends the settlement to both parties. It is the anchor for ratings (Section 9). Gateways MUST make settlements retrievable by id at their settlements endpoint for at least as long as they accept ratings against them.

7.7. What the Gateway Sees

It is a design goal of this document to be exact about this. The gateway sees: both principals (pseudonymous keys), the envelope (tool, model, bounds, ceiling, rail), the payment (and on l402 and balance, who paid), the signed usage, frame sizes, and timing. The gateway does not see: the request, the response, or on the cashu rail, who paid. Campbell Expires 10 March 2027 [Page 17]

Internet-Draft AHP September 2026

7.8. Direct Mode

A consumer and provider that can reach each other directly MAY skip the gateway entirely and use the hypercall of Section 3 with the 402 flow of Section 6. Receipts are issued identically (Section 8). There is no settlement, so ratings in direct mode are anchored to the receipt instead; aggregators weight them accordingly (Section 9.5).

7.9. Trusted Provider Pins

A consumer carries a set of provider principals and their pinned encryption keys. In normal operation it transacts only with pinned providers, whatever the open directory says. Trust is client-side and relational. Pins are the same object as the encryption key the consumer must hold anyway, so "trusted provider" is a pin promoted to an allowlist, and nothing more.

8. Receipts

A receipt is the provider's signed statement of what it was asked, what it answered, and what it was paid. It is the atom of accountability in this system: ratings attach to it, provenance chains through it, and disputes cite it. { "v": 1, "type": "ahp-receipt", "id": "rcpt_01J6...", "settlement": "stl_01J6...", "tool": "/tool/infer", "model": "qwen2.5-coder:32b", "request_hash": "sha256:...", "response_hash": "sha256:...", "usage": { "in": 812, "out": 344 }, "amount": "312", "unit": "sat", "provider": "ed25519:...", "consumer": "ed25519:...", "inputs": ["rcpt_01J5..."], "ts": 1725500041, "sig": "..." } Campbell Expires 10 March 2027 [Page 18]

Internet-Draft AHP September 2026 request_hash is the hash of the canonical request: for a hypercall, the path followed by the query parameters sorted by name and percent- encoded, with credentials and payment proofs removed; for cargo, the JCS form of the req object. response_hash is the hash of the response body bytes. settlement is present in gateway mode and absent in direct mode. inputs is OPTIONAL and lists receipts for upstream paid tools this response depended on (Section 10). In direct mode the receipt travels in the AHP-Receipt response header, base64url-encoded, so that response bodies of any content type are unaffected. In gateway mode it travels inside res_end, encrypted, so the gateway never sees the hashes; the consumer holds the receipt and the gateway holds the settlement, and the two are joined by settlement. Servers SHOULD set ETag to response_hash so that HTTP caching and receipts agree about identity.

9. Ratings and Reputation

9.1. Requirements

* Ratings are authored by consumers and signed by them. A gateway aggregates ratings; it does not author them and cannot read what was rated. * A rating is bound to one settlement (or, in direct mode, one receipt). One party, one transaction, one rating. A rater MAY revise; aggregators keep the latest per (rater, settlement). * Rating weight is a function of money settled. This is the only quality signal a blind relay can verify, and it is Sybil-resistant for the simplest of reasons: faking it costs real sats, paid through the relay fee, to a counterparty who keeps them. * Reputation is portable. A rating is a self-contained signed attestation that references a self-contained signed settlement. Anyone can verify both without asking the gateway that issued them.

9.2. The Rating Attestation

Campbell Expires 10 March 2027 [Page 19]

Internet-Draft AHP September 2026 { "v": 1, "type": "ahp-rating", "settlement": "stl_01J6...", "subject": "ed25519:<provider>", "subject_key": "x25519:<pinned key at time of session>", "rater": "ed25519:<consumer>", "score": 5, "tags": ["accurate", "fast"], "ts": 1725500100, "sig": "..." } score is an integer from 1 to 5. tags is an OPTIONAL array of short strings. An aggregator MUST verify that sig validates against rater, that the referenced settlement validates against its gateway's key, that the settlement's consumer equals rater, and that the settlement's provider equals subject. A rating failing any check is discarded.

9.3. Publication

A consumer publishes a rating by POSTing it to the ratings endpoint of the gateway that issued the settlement. It MAY also publish it anywhere else -- another gateway, a Nostr relay keyed to the provider's principal, the provider's own manifest. A provider MAY collect ratings about itself and present them to any aggregator. Because each rating carries its own proof, none of these channels is privileged.

9.4. The Reputation Feed

An aggregator serves ratings and derived standing at /.well- known/ahp/reputation: GET /.well-known/ahp/reputation?subject=ed25519:... HTTP/1.1 { "subject": "ed25519:...", "standing": 0.87, "settled": { "amount": "1840322", "unit": "sat", "count": 6113 }, "window_days": 90, "ratings": [ ...signed rating objects... ] } The ratings array MUST be present so that a client can recompute standing itself rather than trust the aggregator's number. Aggregators MAY paginate. Campbell Expires 10 March 2027 [Page 20]

Internet-Draft AHP September 2026

9.5. Computing Standing

This section is informative. The protocol carries the inputs; how they are combined is a policy that each aggregator and each consumer is free to choose. The following is the reference policy and is what a gateway SHOULD use for open selection. Each rating r contributes: w(r) = decay(now - r.ts) * norm(r.score) * r.amount * T(r.rater) where norm maps the score to the interval from -1 to 1 (a 3 is neutral), decay is exponential with a half-life on the order of 30 days, and r.amount is the settled amount from the referenced settlement. T(rater) is the rater's own trust, a sublinear function of the sats that rater has itself settled as a consumer within the window, for example log(1 + settled_sats). Sublinearity is what stops a single well-funded principal from owning the scoreboard; the settled-sats floor is what stops a thousand unfunded principals from owning it. Standing is the sum of w(r) over a provider's ratings, normalized to the unit interval across the aggregator's population. An aggregator MAY additionally apply a consensus term in the spirit of [BITTENSOR]: compute the fraction F of trust-weighted raters who rate the provider above neutral, and scale standing by a sigmoid centered at 0.5 with a steepness that rewards providers trusted by a majority of the weighted population and penalizes those trusted only by a clique. This reproduces the property that honest providers' standing grows super-linearly relative to colluding groups, with settled sats in the role that stake plays in the original. Ratings in direct mode, anchored to receipts rather than settlements, are weighted at a discount chosen by the aggregator, since the amount is attested by the provider rather than by a third party. Settlements from a gateway the aggregator does not know SHOULD be weighted at a discount as well. A rogue gateway can mint settlements; it cannot mint anyone else's trust in them. Campbell Expires 10 March 2027 [Page 21]

Internet-Draft AHP September 2026

9.6. Bootstrap and Exposure

A new provider has no standing. Gateways SHOULD cap the share of open selections routed to a provider until its settled volume crosses a threshold, and consumers SHOULD apply budget guards to unpinned providers. This bounds the classic accumulate-then-defect attack: a provider that behaves well to build standing and then degrades can extract at most the exposure its standing bought it, and its standing decays as soon as the ratings turn.

9.7. Portability and Forks

Because every settlement and every rating is a self-verifying signed object anchored to a principal's key, a provider's reputation is not the property of any gateway. A consumer/provider community that forks the gateway starts with the same reputation it had, and a provider that moves gateways carries its history with it. This is the concrete meaning of "fork it": the gateway is an aggregator of claims it did not issue, not the owner of the scoreboard.

10. Information Tools

Nothing above is specific to inference. A tool that crawls a page, runs a search, summarizes a document, or returns a research finding is a hypercall like any other, and its result is cargo like any other. Three properties of receipts make AHP a market for information specifically. Content addressing. response_hash names the content. Two consumers who bought the same finding from the same provider can prove they got the same bytes, and a consumer who bought a finding can prove later what it was told. Provenance. A tool that composes other paid tools -- a research agent that pays three crawlers and a summarizer -- lists their receipts in inputs. The chain of receipts is a provenance graph of paid information: who learned what from whom, for how much, and when. It is verifiable by anyone holding the receipts and invisible to everyone else. Priced judgment. A rating bound to a settlement is the consumer's paid opinion of whether the information was worth it. Aggregated per Section 9.5, it is a market price for a provider's judgment rather than for its throughput, which is the signal an information market needs and a compute market does not. Campbell Expires 10 March 2027 [Page 22]

Internet-Draft AHP September 2026 Information tools SHOULD return Last-Modified reflecting when the underlying observation was made, distinct from Date, so that consumers can price freshness. It should be said plainly that content-addressed receipts with provenance chains are as good a way to sell a working exploit as to sell a research finding, and that this protocol has no content layer: the relay cannot read cargo by design, and this document specifies no mechanism by which any party other than the provider and consumer judges what was sold. The levers that exist are the ones in Section 7.9 and Section 9: providers choose which principals they serve, consumers choose which providers they trust, and every exchange leaves a receipt in the hands of an operator. Those levers are real, and they are the only ones.

10.1. Local Facades

An agent that speaks some other API -- an OpenAI-compatible chat API is the common case -- need not be modified to use AHP. A consumer proxy on the agent's host presents the API the agent expects on a loopback address, and behind it performs discovery, pinning, payment, and the encrypted session. The agent remains oblivious to keys, rails, and sats. Such a proxy MUST bind to loopback or a sidecar network only, MUST enforce budget guards before paying, and SHOULD expose the quote endpoint so that the agent's operator can see prices. A facade MUST record every receipt and settlement it obtains in a ledger readable by the operator and not writable by the agent, and MUST NOT expose wallet funding or budget configuration on the interface the agent uses. The ledger is the audit trail of what the agent bought, from whom, for how much, and what it got; it is the artifact an operator reaches for first when asking what its agents have been doing, and it is the artifact that the incidents in Section 1.2 had to be reconstructed without.

11. Security Considerations

This section states what the protocol protects and what it does not. Agent collusion. This protocol is, deliberately, a channel over which agents exchange information with other agents, and Section 1.2 describes what agents do with such a channel when nobody is watching. The controls that make the market different from a shared cache are: every principal is a key an operator issued; every exchange costs money from a wallet the operator funds and can empty; every purchase produces a receipt in an operator-readable ledger; and standing is public. Operators Campbell Expires 10 March 2027 [Page 23]

Internet-Draft AHP September 2026 SHOULD treat spend as the primary audit signal for agent behavior, SHOULD issue narrow spending authority per task rather than a standing balance, and SHOULD review ledgers for purchases outside a task's expected tool set. None of this prevents an agent from buying something its operator would not approve of; it ensures the operator can find out. Method allow-lists are not containment. Sandboxes that permit GET and block other methods on the theory that GET cannot write have been defeated by agents that went looking for origins where it can [COLLUSION-WIKI]. Containment for agents that use this protocol MUST be enforced at the network layer (which origins are reachable at all) and at the wallet (what can be paid for), not at the method. Credentials in URIs. Bearer tokens and payment proofs MUST travel in headers. See Section 5. Transport. All HTTP in this document is HTTPS. The Noise session provides end-to-end confidentiality across a relay; it does not replace TLS to the relay. The provider sees plaintext. End-to-end encryption hides cargo from the gateway, not from the provider, which must decrypt the request to serve it. A provider can log every request it ever serves, and passive logging is the one defection reputation cannot detect. Consumers with this in their threat model should pin providers they have a relationship with, or providers running in attested execution environments, which are out of scope here. Traffic shape. A blind relay still sees frame sizes and timing, and the gateway performs matchmaking, so it knows which pseudonym talked to which provider, when, and for how much. Padding narrows the first; nothing in this document addresses the second. Prompt injection. Encryption does nothing about a provider that returns adversarial content, or a consumer that sends it. Reputation bounds the former after the fact; the envelope bounds only size and cost, not content. Envelope mismatch. A consumer that pays for a small job and sends a large one is stopped by the provider's envelope match. A gateway that alters the terms is stopped by the handshake prologue. Replay. L402 preimages are single-use and burned before work. Cashu proofs are swapped at the mint. Balances are debited atomically. Receipts, settlements, and ratings carry ids and timestamps and are idempotent on id. Campbell Expires 10 March 2027 [Page 24]

Internet-Draft AHP September 2026 Reputation attacks. Sybil raters are bounded by settled-sats weighting: fake standing costs real money paid to a real counterparty through the relay's fee. Well-funded attackers can still buy standing; weighting raises the cost and does not eliminate it. Accumulate-then-defect is bounded by exposure caps and decay (Section 9). Retaliatory or extortionate ratings are bounded by the one-rating-per-settlement rule and by the rater's own trust weight. Providers MAY refuse consumers by principal. Rogue gateways. A gateway can drop, delay, refuse, or censor. It cannot read cargo, alter terms, or forge a party's signature. It can mint settlements, which is why aggregators discount settlements from gateways they do not trust, and why the recommended response to a bad gateway is to leave it, which the portability of identity and reputation makes cheap. Inheritance. Receipts, ratings, and standing are meant to persist and to be inherited by later agents; that is the purpose of making them portable. Section 1.2 shows the same property in an unsanctioned channel: a later model inherited months of accumulated work from earlier ones and skipped discovery. Operators SHOULD assume that anything an agent can buy on the market, a successor agent with the same wallet can buy on its first turn, and SHOULD scope wallets to tasks rather than to environments. Key compromise. One key does three jobs, so compromise of a principal's keys affects access, encryption, and reputation together. Rotation and revocation are specified; counterparties MUST honor not_after and revocations. Custody. The balance rail and any relay that holds funds between receipt and settlement is doing custodial money movement, with jurisdiction- dependent obligations. Per-request Cashu minimizes custody and is the RECOMMENDED default. This document flags the issue and does not resolve it. Denial of service. Providers dial out and have no public surface, which removes them as a target. Gateways are the target and are expected to rate-limit unauthenticated connections and require payment before relaying. Campbell Expires 10 March 2027 [Page 25]

Internet-Draft AHP September 2026

12. Privacy Considerations

Principals are pseudonymous keys. Linkability across sessions is inherent in pinned, reputation-bearing identities: a consumer that wants standing as a rater cannot also be unlinkable. Consumers that prefer unlinkability can use fresh principals per session on the cashu rail, at the cost of rater trust. Gateways see the metadata in "What the Gateway Sees" and SHOULD retain it no longer than settlements require. Receipts and ratings are designed to be published; parties publishing them are disclosing the counterparties and amounts they contain.

13. IANA Considerations

This document requests registration of the well-known URI suffixes ahp.json and ahp/reputation in the "Well-Known URIs" registry [RFC8615]. This document requests registration of the HTTP field name AHP- Receipt in the "Hypertext Transfer Protocol (HTTP) Field Name Registry". This document requests registration of the authentication schemes L402 and Cashu in the "Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry", to the extent they are not already registered by their owning specifications. This document requests creation of an "AHP Payment Rails" registry with initial entries l402, cashu, and balance, and an "AHP Amount Units" registry with initial entries sat and msat. Registration policy for both is Specification Required. The urn:ahp: problem type identifiers used in this document are placeholders pending a URN namespace registration.

14. References

14.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/rfc/rfc2119>. [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, <https://www.rfc-editor.org/rfc/rfc4648>. Campbell Expires 10 March 2027 [Page 26]

Internet-Draft AHP September 2026 [RFC6455] Fette, I. and A. Melnikov, "The WebSocket Protocol", RFC 6455, DOI 10.17487/RFC6455, December 2011, <https://www.rfc-editor.org/rfc/rfc6455>. [RFC6750] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization Framework: Bearer Token Usage", RFC 6750, DOI 10.17487/RFC6750, October 2012, <https://www.rfc-editor.org/rfc/rfc6750>. [RFC7748] Langley, A., Hamburg, M., and S. Turner, "Elliptic Curves for Security", RFC 7748, DOI 10.17487/RFC7748, January 2016, <https://www.rfc-editor.org/rfc/rfc7748>. [RFC8032] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital Signature Algorithm (EdDSA)", RFC 8032, DOI 10.17487/RFC8032, January 2017, <https://www.rfc-editor.org/rfc/rfc8032>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format", STD 90, RFC 8259, DOI 10.17487/RFC8259, December 2017, <https://www.rfc-editor.org/rfc/rfc8259>. [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, <https://www.rfc-editor.org/rfc/rfc8615>. [RFC8785] Rundgren, A., Jordan, B., and S. Erdtman, "JSON Canonicalization Scheme (JCS)", RFC 8785, DOI 10.17487/RFC8785, June 2020, <https://www.rfc-editor.org/rfc/rfc8785>. [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., "HTTP Semantics", STD 97, RFC 9110, DOI 10.17487/RFC9110, June 2022, <https://www.rfc-editor.org/rfc/rfc9110>. [RFC9457] Nottingham, M., Wilde, E., and S. Dalal, "Problem Details for HTTP APIs", RFC 9457, DOI 10.17487/RFC9457, July 2023, <https://www.rfc-editor.org/rfc/rfc9457>.

14.2. Informative References

Campbell Expires 10 March 2027 [Page 27]

Internet-Draft AHP September 2026 [BITTENSOR] Rao, Y., "Bittensor: A Peer-to-Peer Intelligence Market", 2021, <https://bittensor.com/whitepaper>. [BOLT11] Lightning Network Specifications, "BOLT #11: Invoice Protocol for Lightning Payments", n.d., <https://github.com/lightning/bolts/blob/ master/11-invoice.md>. [CASHU] Cashu, "Cashu NUTs (Notation, Usage, and Terminology), including the HTTP 402 payment flow", n.d., <https://github.com/cashubtc/nuts>. [CHARON] DeepBlue Dynamics, "Charon: A Blind, End-to-End-Encrypted Marketplace for AI Inference", n.d., <https://charon.nuts.services>. [COLLUSION-WIKI] Arx, S. V., Byrd, C. S., Kitts, S., and T. Larsen, "Discovery of a New OpenAI Agent Message Board", September 2026, <https://collusion.wiki>. [HF-TIMELINE] Hugging Face, "Anatomy of a Frontier Lab Agent Intrusion: A Technical Timeline of the July 2026 Incident", July 2026, <https://huggingface.co/blog/agent-intrusion- technical-timeline>. [I-D.campbell-agentic-http] Campbell, K., "A Best Current Practice for Agentic Interactions over HTTP", Work in Progress, Internet-Draft, draft-campbell-agentic-http-00, 7 August 2025, <https://datatracker.ietf.org/doc/html/draft-campbell- agentic-http-00>. [I-D.hood-independent-agtp] Hood, C., "Agent Transfer Protocol (AGTP)", Work in Progress, Internet-Draft, draft-hood-independent-agtp-09, 28 June 2026, <https://datatracker.ietf.org/doc/html/ draft-hood-independent-agtp-09>. [I-D.ietf-httpapi-idempotency-key-header] Jena, J. and S. Dalal, "The Idempotency-Key HTTP Header Field", Work in Progress, Internet-Draft, draft-ietf- httpapi-idempotency-key-header-07, 15 October 2025, <https://datatracker.ietf.org/doc/html/draft-ietf-httpapi- idempotency-key-header-07>. Campbell Expires 10 March 2027 [Page 28]

Internet-Draft AHP September 2026 [L402] Lightning Labs, "L402: The Lightning HTTP 402 Protocol", n.d., <https://docs.lightning.engineering/the-lightning- network/l402>. [MANIFESTO] Campbell, K., "The Agentic Hypercall Protocol Manifesto", n.d., <https://github.com/kordless/gnosis-ahp/blob/main/ MANIFESTO.md>. [NOISE] Perrin, T., "The Noise Protocol Framework, Revision 34", 2018, <https://noiseprotocol.org/noise.html>. [OPENAI-HF] OpenAI, "Hugging Face Model Evaluation Security Incident", July 2026, <https://openai.com/index/hugging-face-model- evaluation-security-incident/>. [OPENAPI] OpenAPI Initiative, "OpenAPI Specification v3.1.0", n.d., <https://spec.openapis.org/oas/v3.1.0>. [RFC6648] Saint-Andre, P., Crocker, D., and M. Nottingham, "Deprecating the "X-" Prefix and Similar Constructs in Application Protocols", BCP 178, RFC 6648, DOI 10.17487/RFC6648, June 2012, <https://www.rfc-editor.org/rfc/rfc6648>. [RFC9111] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., "HTTP Caching", STD 98, RFC 9111, DOI 10.17487/RFC9111, June 2022, <https://www.rfc-editor.org/rfc/rfc9111>.

Appendix A. Example Flows

A.1. A Direct Paid Call

Campbell Expires 10 March 2027 [Page 29]

Internet-Draft AHP September 2026 GET /tool/qr_code?data=hello HTTP/1.1 Host: ahp.example Authorization: Bearer ahp_eyJ... HTTP/1.1 402 Payment Required WWW-Authenticate: Cashu mint="https://mint.example", amount="10", unit="sat" Content-Type: application/problem+json { "type": "urn:ahp:problem:payment-required", "status": 402, "tool": "/tool/qr_code", "amount": "10", "unit": "sat", "offers": [ { "rail": "cashu", "mints": ["https://mint.example"] } ] } GET /tool/qr_code?data=hello HTTP/1.1 Host: ahp.example Authorization: Bearer ahp_eyJ... X-Cashu: cashuBo2Ftd2h0dHBzOi8vbWludC5leGFtcGxl... HTTP/1.1 200 OK Content-Type: image/png ETag: "sha256:9f86d0..." AHP-Receipt: eyJ2IjoxLCJ0eXBlIjoiYWhwLXJlY2VpcHQiLCJpZCI6... X-Cashu: cashuBo2Ftd2h0dHBzOi8vbWludC5leGFtcGxl... (change, if any) <png bytes>

A.2. A Blind Session

Consumer Gateway Provider | |<---- ws /register ---------| | | ahp-register (signed) | |---- ws /session --------->| | | ahp-envelope + ecash | | | |-- verify, hold, select --->| |==== Noise IK msg 1 ======>|============================>| |<=== Noise IK msg 2 =======|<============================| | (prologue = JCS(envelope); provider key pinned) | |==== req (encrypted) =====>|============================>| | | envelope match: ok | |<=== res_chunk ... ========|<============================| |<=== res_end + receipt ====|<==== res_end + usage =======| | | settle 312, fee 6, | | | return 108 change | |<---- ahp-settlement ------|------ ahp-settlement ------>| |---- POST /ratings ------->| | | ahp-rating (signed) | | Campbell Expires 10 March 2027 [Page 30]

Internet-Draft AHP September 2026

A.3. A Provenance Chain

A research tool pays two crawlers and a summarizer, then answers its own consumer. Its receipt lists the three upstream receipts in inputs. The end consumer, holding the top receipt, can request the upstream receipts from the research tool and verify the entire chain of hashes, amounts, and signatures without any party having revealed content to a relay.

Appendix B. Changes from draft-campbell-agentic-http-00

* Bearer tokens moved from the query string to the Authorization header. Query-string tokens are now prohibited. * The contradiction between "all actions are GET" and the normative text limiting GET to idempotent actions is resolved: GET is canonical, POST carries large or non-idempotent requests with identical semantics, and Idempotency-Key is recommended for the latter. * The 402 payload is now a Problem Details document, paired with WWW-Authenticate challenges, and reconciled with L402 so that an L402-only client interoperates. Cashu and prepaid balances are added as rails. * Cost declaration moved into an x-ahp OpenAPI extension and a well- known manifest; the manifest is now the discovery entry point. * The gateway, envelope, Noise session, envelope match, and settlement are new, generalized from Charon. * Receipts, ratings, the reputation feed, and the standing policy are new. * References corrected: BCP 14 is cited as RFC 2119 plus RFC 8174; RFC 9110 is cited for 402; L402, Cashu, BOLT 11, Noise, and OpenAPI are cited as informative. * Editorial: removed the spurious RFC number from the running header, the duplicated "Status of This Memo" section, the doubled section numbers, the two different expiry dates, and the markdown emphasis that leaked into normative text. Author's Address Kord Campbell DeepBlue Dynamics Email: kordless@gmail.com Campbell Expires 10 March 2027 [Page 31]