Skip to main content

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

Document Type Active Internet-Draft (individual)
Author Kord Campbell
Last updated 2026-09-06
Replaces draft-campbell-agentic-http
RFC stream (None)
Intended RFC status (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-campbell-agentic-market-00
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]