<?xml version="1.0" encoding="utf-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" docName="draft-agentir-aepp-01" category="info" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3">
	<front>
		<title abbrev="AEPP">Agent Execution and Payment Protocol (AEPP)</title>
		<seriesInfo name="Internet-Draft" value="draft-agentir-aepp-01"/>
		<author initials="E." surname="Spink" fullname="E. Spink">
			<organization>Agentir Network</organization>
			<address>
				<email>support@agentir.com</email>
				<uri>https://agentir.com</uri>
			</address>
		</author>
		<date year="2026" month="May" day="23"/>
		<workgroup>Internet Engineering Task Force</workgroup>
		<abstract>
			<t> This document defines the Agent Execution and Payment Protocol (AEPP), a standardized protocol layer for executing AI agents and verifying payment for agent tasks on the open internet. AEPP provides the missing execution and payment layer for existing agent URI schemes and naming services including agent://, ai://, mcp://, ANS, and DNS-AID. It defines a three-phase execution model: discovery, payment, and execution, with on-chain payment verification and cryptographic receipts. This revision introduces the AE:// URI scheme, namespace derivation rules, DNS-based ownership verification, payment scheme extensions, DDoS mitigation via dynamic session tokens, and a privacy model requiring no identity disclosure. A reference implementation serving 1,800,000 agents with zero per-agent fees is live at a2a.agentir.com.</t>
		</abstract>
	</front>
	<middle>
		<section anchor="sect-1" numbered="true" toc="default">
			<name>Introduction</name>
			<t> The emergence of AI agent naming and discovery standards including ANS, DNS-AID, agent://, ai:// and mcp:// has established mechanisms for agent identity and discovery. However, none of these standards define how to:</t>
			<ol spacing="normal" type="a">
				<li>
					<t>Execute a task against a discovered agent</t>
				</li>
				<li>
					<t>Pay for agent execution in a standardized way</t>
				</li>
				<li>
					<t>Verify payment cryptographically before execution</t>
				</li>
				<li>
					<t>Receive a verifiable execution receipt</t>
				</li>
				<li>
					<t>Prevent replay attacks on payment transactions</t>
				</li>
				<li>
					<t>Express agent pricing in machine-readable form</t>
				</li>
				<li>
					<t>Route payment directly to agent operators</t>
				</li>
			</ol>
			<t> AEPP fills this gap. Existing agent standards including ANS and DNS-AID establish agent identity and discovery but do not define agent pricing, payment destination, payment protocol, payment verification, execution receipts, or replay attack prevention. An agent that can be discovered but not paid for represents incomplete infrastructure. AEPP provides the missing commercial layer that transforms agent discovery into agent execution.</t>
			<artwork name="" type="" align="left" alt="">
				<![CDATA[ This revision introduces the AE:// URI scheme as the canonical identifier for agent execution endpoints, namespace derivation rules anchored to the Domain Name System, DNS-based ownership verification requiring no additional certificates or identity disclosure, payment scheme extensions including free discovery, fiat on-ramp credits, and native on-chain payment, DDoS mitigation via economic barriers and dynamic session tokens, and a privacy model that requires no personal identity information from namespace holders. AEPP is designed to be: ]]>
			</artwork>
			<ul spacing="normal">
				<li>
					<t>Fee-free per registration — no per-agent naming or registration fees</t>
				</li>
				<li>
					<t>Open — any agent network may implement AEPP</t>
				</li>
				<li>
					<t>Federated — no central execution authority</t>
				</li>
				<li>
					<t>Verifiable — all payments cryptographically verified on-chain</t>
				</li>
				<li>
					<t>Interoperable — works with all existing agent standards</t>
				</li>
				<li>
					<t>Privacy-preserving — no identity disclosure required</t>
				</li>
				<li>
					<t>DDoS-resistant — economic and technical barriers to abuse</t>
				</li>
			</ul>
		</section>
		<section anchor="sect-2" numbered="true" toc="default">
			<name>Terminology</name>
			<t> The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.</t>
			<artwork name="" type="" align="left" alt="">
				<![CDATA[ Agent: An autonomous software service that accepts tasks, processes them, and returns results. Executor: The client initiating an agent task execution. Namespace: A short identifier derived from a domain name that uniquely identifies an agent operator within the AE:// URI scheme. Namespace Holder: The entity that controls the DNS zone for the domain from which a namespace is derived. Payment Challenge: A machine-readable payment requirement returned by the agent endpoint before execution. Payment Scheme: A supported payment method declared in the payment challenge. Defined schemes include x402, credits, and free. Execution Receipt: A cryptographically verifiable record of task completion and payment. Replay Protection: Enforcement that each payment transaction may only be used once for agent execution. Session Token: A single-use cryptographically random identifier appended to execution endpoints to prevent targeted DDoS. ]]>
			</artwork>
		</section>
		<section anchor="sect-3" numbered="true" toc="default">
			<name>AE:// URI Scheme</name>
			<artwork name="" type="" align="left" alt="">
				<![CDATA[ AEPP defines the AE:// URI scheme as the canonical identifier for agent execution endpoints on the agentic internet. The AE:// scheme provides human-readable, portable, and verifiable agent addresses that resolve to AEPP execution endpoints. AE:// URI syntax: AE://{capability}.{namespace} Examples: AE://legal-compliance.example AE://oncology.pubmed AE://weather-forecast.accuweather AE://code-review.github AE://tax-guidance.hmrc.gov.uk AE:// URIs MUST NOT include version numbers. Agent versioning is handled at the endpoint level. AE:// URIs are permanent and stable. Integrations built against an AE:// URI MUST NOT break due to agent version changes. ]]>
			</artwork>
			<section anchor="sect-3.1" numbered="true" toc="default">
				<name>Namespace Derivation Rules</name>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ AE:// namespaces are derived from domain ownership according to the following rules: Rule 1 — .com registrant receives the clean short namespace: ]]>
				</artwork>
				<dl newline="false" spacing="normal" indent="6">
					<dt>example.com</dt>
					<dd>
						<t>-&gt; namespace: "example" URI: AE://capability.example</t>
					</dd>
					<dt>Rule 2</dt>
					<dd>
						<t>All other TLDs retain their TLD as a qualifier:</t>
						<t>example.co.uk -&gt; namespace: "example.co.uk" URI: AE://capability.example.co.uk</t>
						<t>example.dev -&gt; namespace: "example.dev" URI: AE://capability.example.dev</t>
					</dd>
				</dl>
				<t> Rule 3 — Government and institutional TLDs receive sovereign namespace rights:</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ hmrc.gov.uk -> namespace: "hmrc.gov.uk" URI: AE://tax-guidance.hmrc.gov.uk ]]>
				</artwork>
				<ul empty="true" spacing="normal">
					<li>
						<dl newline="false" spacing="normal" indent="14">
							<dt>europa.eu</dt>
							<dd>
								<t> -> namespace: "europa.eu" </t>
								<t> URI: AE://regulation.europa.eu </t>
							</dd>
						</dl>
					</li>
				</ul>
				<t> Rule 4 — Absolute .com Sovereignty: The clean, short namespace is strictly and permanently reserved for the .com top-level domain registrant. No other TLD can ever claim, intercept, or inherit the base short namespace, regardless of registration timelines or operational status. All non-.com domains MUST preserve their fully qualified TLD extension in the namespace string as outlined in Rule 2.</t>
				<t> Rule 5 — First verified claim wins permanently within that specific zone. No namespace configuration MAY be altered or transferred without valid cryptographic proof of DNS zone control matching the precise domain rule mapping.</t>
				<t> This design leverages the existing Domain Name System and ICANN root zone management as the trust anchor. No additional registry, certificate authority, or verification service is required beyond standard DNS TXT record verification. The security model is equivalent to the security of DNS itself.</t>
			</section>
			<section anchor="sect-3.2" numbered="true" toc="default">
				<name>DNS Ownership Verification</name>
				<t> Namespace holders MUST add a DNS TXT record to prove domain ownership. This single record is sufficient proof. No additional certificates, keys, or validation steps are required.</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ Record name: _ae.{domain} Record type: TXT Minimum value: "v=ae1" Optional fields within the TXT record value: endpoint={url} Agent execution endpoint URL capability={text} One-line capability description wallet={address} Payment wallet address Example minimal record: ]]>
				</artwork>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ _ae.example.com TXT "v=ae1" Example full record: _ae.example.com TXT "v=ae1 endpoint=https://a2a.example.com capability=specialist-agent-network" ]]>
				</artwork>
				<t> To add this TXT record, the operator must have DNS write access to the domain. DNS write access requires registrar credentials. Registrar access is controlled by ICANN-accredited domain registration. Therefore, possession of a valid _ae TXT record constitutes proof of domain ownership equivalent to the security of the ICANN registration chain.</t>
				<t> AEPP MUST NOT require personal identity information, contact details, organizational information, KYC, or AML verification for namespace registration. Identity disclosure is at the sole discretion of the namespace holder.</t>
			</section>
			<section anchor="sect-3.3" numbered="true" toc="default">
				<name>Namespace Registration</name>
				<t> Operators register a namespace by submitting a POST request to an AEPP-compliant registry:</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ POST https://a2a.example.com/ae/register Content-Type: application/json { "namespace": "example", "domain": "example.com", "endpoint": "https://a2a.example.com" } ]]>
				</artwork>
				<t>
					The registry MUST verify the _ae DNS TXT record before confirming registration. Namespace registration is first-come first-served among verified domain owners. Implementations MAY charge a one-time namespace registration fee not to exceed 0.01 USDC to prevent abuse. Per-agent registration fees are prohibited per the fee structures defined in this architecture.
				</t>
			</section>
			<section anchor="sect-3.4" numbered="true" toc="default">
				<name>AE:// Resolution</name>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ AE:// URIs resolve to AEPP execution endpoints via the following chain: Step 1 — Extract namespace from AE:// URI: ]]>
				</artwork>
				<dl newline="false" spacing="normal" indent="4">
					<dt>Step 1</dt>
					<dd>
						<t>AE://legal-compliance.example -&gt; namespace: example</t>
					</dd>
					<dt>Step 2</dt>
					<dd>
						<t>
							DNS lookup of namespace resolver: _ae.example.com TXT -&gt; endpoint: <eref target="https://a2a.example.com"/>
						</t>
					</dd>
					<dt>Step 3</dt>
					<dd>
						<t>
							Query AEPP resolver with full URI: GET <eref target="https://a2a.example.com/ae/resolve"/>?uri=AE://legal-compliance.example
						</t>
					</dd>
				</dl>
				<t> Step 3.5 (Static Fallback) — If the dynamic lookup registry endpoint times out or returns an unresolvable routing exception, the resolving client MUST fall back to a direct, authenticated static GET request querying the root domain's well-known path directory at: https://{namespace-domain}/.well-known/aepp.json</t>
				<t> Step 4 — Resolver returns agent card:</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ { "did": "did:web:a2a.example.com:legal-compliance-A3F9B2", "endpoint": "https://a2a.example.com/?id=legal-compliance-A3F9B2", "capability": "legal compliance analysis", "payment": { "scheme": "x402", "amount": "25000", "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "network": "eip155:8453" }, "ae": "AEPP/1.0" } Step 5 — Caller proceeds with AEPP three-phase execution. ]]>
				</artwork>
				<t> Implementations MAY cache resolution results. Cached results MUST be revalidated against DNS within 3600 seconds.</t>
			</section>
		</section>
		<section anchor="sect-4" numbered="true" toc="default">
			<name>Protocol Overview</name>
			<t> AEPP defines a three-phase execution model:</t>
			<dl newline="true" spacing="normal" indent="2">
				<dt>Phase 1 — DISCOVERY</dt>
				<dd> Client sends GET to agent endpoint Agent returns 402 Payment Required + payment challenge Challenge lists all supported payment schemes </dd>
				<dt>Phase 2 — PAYMENT</dt>
				<dd> Client selects a payment scheme from the challenge Client satisfies payment requirement Client obtains payment proof </dd>
				<dt>Phase 3 — EXECUTION</dt>
				<dd> Client sends POST with task + payment proof + scheme identifier Agent verifies payment Agent executes task Agent returns result + execution receipt </dd>
			</dl>
		</section>
		<section anchor="sect-5" numbered="true" toc="default">
			<name>Phase 1 — Discovery</name>
			<section anchor="sect-5.1" numbered="true" toc="default">
				<name>Request</name>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ GET https://{agent-endpoint}/?id={agent_id} Accept: application/json ]]>
				</artwork>
			</section>
			<section anchor="sect-5.2" numbered="true" toc="default">
				<name>Response</name>
				<t> The agent MUST return HTTP 402 Payment Required with a payment challenge listing all supported payment schemes.</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ HTTP/1.1 402 Payment Required Content-Type: application/json PAYMENT-REQUIRED: {base64-encoded-challenge} WWW-Authenticate: L402 invoice="{wallet}", price="{amount}" X-L402-Service-DID: did:web:{namespace}:{agent_id} { "x402Version": 2, "error": "Payment required", "resource": { "url": "https://{endpoint}/?id={agent_id}", "description": "{agent capability}", "mimeType": "application/json" }, "payment_schemes": [ { "scheme": "free", "limit": "discovery_only", "note": "Returns agent card and pricing. No execution." }, { "scheme": "x402", "network": "eip155:8453", "amount": "25000", "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "payTo": "{agent-wallet-address}", "maxTimeoutSeconds": 60, "note": "Pay 0.025 USDC on Base Mainnet" }, { "scheme": "credits", "endpoint": "https://{credits-provider}", "note": "Purchase credits with credit card" } ], "agent": { "id": "{agent_id}", "name": "{agent name}", "did": "did:web:{namespace}:{agent_id}", "ae_uri": "AE://{capability}.{namespace}", "price_usdc": 0.025 } } ]]>
				</artwork>
				<t> AEPP implementations MUST support the free discovery scheme. AEPP implementations SHOULD support at least one execution scheme.</t>
			</section>
		</section>
		<section anchor="sect-6" numbered="true" toc="default">
			<name>Phase 2 — Payment</name>
			<section anchor="sect-6.1" numbered="true" toc="default">
				<name>Payment Schemes</name>
				<t> AEPP defines three base payment schemes. Additional schemes MAY be registered via IANA extension rules.</t>
				<dl newline="true" spacing="normal" indent="3">
					<dt>free:</dt>
					<dd> Discovery and capability inspection only. No task execution. No payment required. Callers using the free scheme receive the agent card, supported payment schemes, pricing, and DID. The free scheme MUST be supported by all AEPP implementations. </dd>
					<dt>x402:</dt>
					<dd> Native on-chain payment per the x402 protocol (x402.org). Supports EVM-compatible chains, Solana, and traditional payment method extensions. The reference implementation uses USDC on Base Mainnet (eip155:8453). Full task execution with cryptographic on-chain receipt. </dd>
					<dt>credits:</dt>
					<dd> Managed fiat payment via a credit system. Credits are purchased via traditional payment methods (credit card, bank transfer) and redeemed for agent execution. Managed payment providers MAY accept traditional payment methods and convert them to x402-compatible payments internally, provided the agent receives verified payment and a valid AEPP receipt is issued. Full task execution. </dd>
				</dl>
				<t> The caller MUST indicate the chosen scheme via the X-Payment-Scheme header in the execution request. If omitted the server defaults to x402.</t>
				<t> AEPP payment fees are percentage-based, not fixed. This enables any price point from micro-payments to enterprise contracts on identical payment rails. The fee model scales with delivered value.</t>
				<t> Managed payment implementations MAY offer fiat-to-x402 conversion enabling traditional payment users to participate in the AEPP ecosystem. Users MAY convert accumulated credits to on-chain USDC at any time, taking direct custody of funds.</t>
			</section>
			<section anchor="sect-6.2" numbered="true" toc="default">
				<name>Reference Payment Implementation</name>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ Network: Base Mainnet (eip155:8453) Currency: USDC Contract: 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 Amount: As specified in payment challenge Method: ERC-20 transfer to agent wallet address Proof: Transaction hash from payment network Split: Atomic split via smart contract (PingSplitter pattern) ]]>
				</artwork>
				<t> The PingSplitter pattern — where a treasury orchestrator triggers atomic USDC splits via smart contract — is the reference implementation for AEPP fee collection. The payment transaction hash serves as both payment proof and split trigger. Gas fees for the split are paid by the orchestrating party, not the end user. The split amount is configurable as a percentage, not a fixed value, enabling any price point.</t>
			</section>
			<section anchor="sect-6.3" numbered="true" toc="default">
				<name>Autonomous Payment Example</name>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ // Read payment details from challenge const challenge = JSON.parse( Buffer.from( response.headers.get("PAYMENT-REQUIRED"), "base64" ).toString() ); // Select payment scheme const scheme = challenge.payment_schemes.find( s => s.scheme === "x402" ); const { payTo, amount, asset } = scheme; // Sign and broadcast payment (viem example) const txHash = await walletClient.writeContract({ address: asset, abi: [{ name: "transfer", type: "function", inputs: [ { name: "to", type: "address" }, { name: "amount", type: "uint256" } ] }], functionName: "transfer", args: [payTo, BigInt(amount)] }); ]]>
				</artwork>
			</section>
			<section anchor="sect-6.4" numbered="true" toc="default">
				<name>Protocol Fee</name>
				<t> AEPP implementations MAY collect a protocol sustainability fee not to exceed 0.4% per execution (approximately 0.0001 USDC on a 0.025 USDC task). This fee MUST be:</t>
				<ul spacing="normal">
					<li>
						<t>Percentage-based, not fixed</t>
					</li>
					<li>
						<t>Disclosed in the agent card and execution receipt</t>
					</li>
					<li>
						<t>Collected via atomic smart contract split, not post-execution sweep</t>
					</li>
					<li>
						<t>Never applied to the free discovery scheme</t>
					</li>
				</ul>
				<t> Protocol fee collection MUST be implemented via smart contract to eliminate trust requirements. The fee split is immutable and transparent. Anyone may verify the split parameters on-chain.</t>
				<t> Registration MUST remain free regardless of protocol fee collection.</t>
			</section>
		</section>
		<section anchor="sect-7" numbered="true" toc="default">
			<name>Phase 3 — Execution</name>
			<section anchor="sect-7.1" numbered="true" toc="default">
				<name>Request</name>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ POST https://{agent-endpoint}/?id={agent_id}&s={session-token} Content-Type: application/json X-Payment-Hash: {transaction-hash} X-Payment-Scheme: {scheme} { "prompt": "task description or question" } ]]>
				</artwork>
				<t> The session token (s= parameter) is a single-use cryptographically random identifier issued per payment challenge. See Section 9.2 for session token requirements.</t>
				<t> The X-Payment-Scheme header MUST be included. Valid values are: x402, credits, free. If omitted, the server MUST assume x402.</t>
				<t> For the credits scheme, the X-Credit-Token header MUST be included in place of X-Payment-Hash:</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ POST https://{agent-endpoint}/?id={agent_id}&s={session-token} Content-Type: application/json X-Payment-Scheme: credits X-Credit-Token: {credit-token} ]]>
				</artwork>
				<t> For the free scheme, no payment header is required. The response MUST be limited to the agent card only. No task execution occurs.</t>
			</section>
			<section anchor="sect-7.2" numbered="true" toc="default">
				<name>Payment Verification</name>
				<t> Upon receiving the execution request the agent MUST:</t>
				<ol spacing="normal" type="1">
					<li>
						<t>Validate the session token exists, has a valid signature, and has not expired</t>
					</li>
					<li>
						<t>Delete the session token immediately to invalidate further edge requests</t>
					</li>
					<li>
						<t>Extract the payment proof from X-Payment-Hash or X-Credit-Token</t>
					</li>
					<li>
						<t>Verify the payment scheme matches a supported scheme</t>
					</li>
					<li>
						<t>For x402: verify the transaction exists on the designated blockchain layer</t>
					</li>
					<li>
						<t>For x402: verify the transaction recipient matches the agent wallet address</t>
					</li>
					<li>
						<t>For x402: verify the transaction amount meets or exceeds the required target amount</t>
					</li>
					<li>
						<t>For x402: cryptographically verify that the transaction nonce or customer signature binds directly to the single-use session token, preventing network-wide replay attacks without requiring exhaustive historical database checks</t>
					</li>
					<li>
						<t>For x402: commit the verified transaction hash to a localized, memory-cached bloom filter before initializing the execution process</t>
					</li>
					<li>
						<t>For credits: verify the credit token against the issuing managed protocol authority</t>
					</li>
				</ol>
				<t> If any verification step fails the agent MUST return HTTP 403 Forbidden with a machine-readable reason code.</t>
			</section>
			<section anchor="sect-7.3" numbered="true" toc="default">
				<name>Response</name>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ HTTP/1.1 200 OK Content-Type: application/json { "id": "did:web:{namespace}:{agent_id}", "ae_uri": "AE://{capability}.{namespace}", "result": "{agent response}", "receipt": { "protocol": "AEPP/1.0", "scheme": "{payment-scheme}", "currency": "USDC", "amount": 0.025, "aepp_fee": 0.0001, "agent_received": 0.0249, "chain": "eip155:8453", "tx": "{transaction-hash}", "agent_did": "did:web:{namespace}:{agent_id}", "verified_at": "{ISO-8601-timestamp}" } } ]]>
				</artwork>
			</section>
		</section>
		<section anchor="sect-8" numbered="true" toc="default">
			<name>Universal Clip</name>
			<t> AEPP defines a Universal Clip registration mechanism that converts any existing API or agent protocol to AEPP-compatible endpoints. This eliminates per-agent registration fees by generating all required metadata automatically.</t>
			<section anchor="sect-8.1" numbered="true" toc="default">
				<name>Supported Input Protocols</name>
				<ul spacing="normal">
					<li>
						<t>REST APIs — any JSON HTTP endpoint</t>
					</li>
					<li>
						<t>Model Context Protocol (MCP)</t>
					</li>
					<li>
						<t>OpenAI plugin manifest</t>
					</li>
					<li>
						<t>LangChain tools</t>
					</li>
					<li>
						<t>Google A2A protocol</t>
					</li>
					<li>
						<t>AE registered agents</t>
					</li>
					<li>
						<t>DNS-AID discovered agents</t>
					</li>
				</ul>
			</section>
			<section anchor="sect-8.2" numbered="true" toc="default">
				<name>Registration</name>
				<t> Any service registers with a single POST request at zero cost:</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ POST https://{aepp-registry}/ae/register Content-Type: application/json { "name": "Service Name", "endpoint": "https://api.example.com", "capability": "service description", "type": "rest|mcp|openai|langchain|a2a|ae" } Response: { "did": "did:web:a2a.example.com:{agent_id}", "ae_uri": "AE://{capability}.{namespace}", "endpoint": "https://a2a.example.com/?id={agent_id}", "openapi": "https://a2a.example.com/openapi.json?id={agent_id}", "agent_card": "https://a2a.example.com/.well-known/agent.json?id={agent_id}", "whois": "https://a2a.example.com/whois?id={agent_id}", "aepp": "AEPP/1.0 ready", "fee": "0.00 per registration" } ]]>
				</artwork>
				<t> Registration is free. AEPP implementations MUST NOT charge per- agent registration fees. Revenue models MUST be based on execution, not naming or registration.</t>
			</section>
			<section anchor="sect-8.3" numbered="true" toc="default">
				<name>WHOIS</name>
				<t> Any registered agent is queryable via WHOIS:</t>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ GET https://{aepp-registry}/whois?id={agent_id} GET https://{aepp-registry}/whois?did=did:web:{namespace}:{id} GET https://{aepp-registry}/whois?uri=AE://{capability}.{namespace} Response includes: identity, AE:// URI, capability, pricing, hire history, execution stats, DNS-AID records, ANS compatibility, and W3C DID document. ]]>
				</artwork>
				<t> Trust is established through execution history — hire count, session completion rate, and endpoint uptime — rather than certificates. An agent hired 10,000 times with consistent results is trustworthy without PKI verification.</t>
			</section>
		</section>
		<section anchor="sect-9" numbered="true" toc="default">
			<name>DDoS Mitigation</name>
			<t> AEPP provides two complementary DDoS mitigation mechanisms: economic barriers via the payment requirement, and technical barriers via dynamic session tokens.</t>
			<section anchor="sect-9.1" numbered="true" toc="default">
				<name>Economic Protection</name>
				<t> All execution requests require verified payment. Mass requests are therefore economically unviable. At the reference implementation price of 0.025 USDC per execution:</t>
				<dl newline="false" spacing="normal" indent="3">
					<dt/>
					<dd> 1,000,000 requests = $25,000 cost to attacker 1,000,000 requests = $25,000 revenue to network</dd>
				</dl>
				<t> DDoS attacks against AEPP endpoints are self-funding for the network. Attackers bear the full economic cost of the attack. This economic barrier applies inherently without additional configuration.</t>
				<t> Free discovery requests (scheme: free) do not require payment and are therefore subject to standard rate limiting. AEPP implementations MUST apply rate limiting to free discovery requests. A limit of 100 free discovery requests per IP address per hour is RECOMMENDED.</t>
			</section>
			<section anchor="sect-9.2" numbered="true" toc="default">
				<name>Dynamic Session Tokens</name>
				<t> AEPP provides an additional technical DDoS barrier via dynamic session tokens. Published AE:// addresses and agent_ids are static and publicly known. Execution endpoints are dynamically generated per payment challenge.</t>
				<t> Session token requirements:</t>
				<ul spacing="normal">
					<li>
						<t>MUST be cryptographically random (minimum 64 bits of entropy)</t>
					</li>
					<li>
						<t>MUST be single-use</t>
					</li>
					<li>
						<t>MUST expire within 60 seconds of issuance</t>
					</li>
					<li>
						<t>MUST be appended as a URL parameter (s=) to the execution endpoint</t>
					</li>
					<li>
						<t>MUST be deleted immediately upon first use</t>
						<dl newline="true" spacing="normal" indent="3">
							<dt>Session token generation example:</dt>
							<dd/>
						</dl>
					</li>
				</ul>
				<artwork name="" type="" align="left" alt="">
					<![CDATA[ const token = crypto.randomUUID() .replace(/-/g, '') .substring(0, 16) .toUpperCase(); // endpoint: https://a2a.example.com/?id=legal-A3F9B2&s=7KX9MP2Q The published AE:// URI and agent_id resolve to known addresses. The session token appended to the execution endpoint changes with every payment challenge. An attacker with knowledge of the agent_id cannot target the execution endpoint directly. The session token is revealed only after payment verification, at which point it is already consumed. ]]>
				</artwork>
			</section>
		</section>
		<section anchor="sect-10" numbered="true" toc="default">
			<name>Privacy Model</name>
			<t> AEPP namespace registration requires only:</t>
			<ol spacing="normal" type="1">
				<li>
					<t>Proof of domain ownership via DNS TXT record</t>
				</li>
				<li>
					<t>Agent endpoint URL</t>
				</li>
				<li>
					<t>Agent capability description</t>
				</li>
			</ol>
			<t> AEPP MUST NOT require:</t>
			<ol spacing="normal" type="1">
				<li>
					<t>Personal identity information</t>
				</li>
				<li>
					<t>Contact details</t>
				</li>
				<li>
					<t>Organizational information</t>
				</li>
				<li>
					<t>KYC or AML verification</t>
				</li>
				<li>
					<t>Physical address</t>
				</li>
			</ol>
			<t> Identity disclosure is at the sole discretion of the namespace holder. AEPP is a technical protocol, not an identity service. Identity verification, where required, is handled by the agent operator at the application layer, not the protocol layer.</t>
			<t> Trust is established through execution history rather than identity documents. A namespace holder's reputation is built through successful agent executions, not through certificate issuance.</t>
			<t> This model contrasts with certificate-based trust systems that require identity verification at registration. AEPP's position is that technical proof of domain ownership is sufficient for namespace assignment, and execution history is sufficient for trust establishment.</t>
			<t> Operators choosing to disclose identity information MAY include additional fields in their DNS TXT record or agent WHOIS response. This disclosure is voluntary and does not affect namespace assignment or execution capability.</t>
		</section>
		<section anchor="sect-11" numbered="true" toc="default">
			<name>Replay Protection</name>
			<t> AEPP implementations MUST enforce replay protection. Each payment transaction hash MUST be accepted for execution exactly once. Subsequent requests using the same transaction hash MUST be rejected with HTTP 403 and the reason "TX_ALREADY_REDEEMED".</t>
			<t> Implementations MUST maintain a persistent record of redeemed transaction hashes. This record MUST survive service restarts.</t>
			<t> Session tokens provide a second layer of replay protection independent of transaction hash tracking. A consumed session token cannot be reused regardless of payment status.</t>
		</section>
		<section anchor="sect-12" numbered="true" toc="default">
			<name>Relationship to Existing Standards</name>
			<section anchor="sect-12.1" numbered="true" toc="default">
				<name>ANS — Agent Name Service</name>
				<t> ANS provides agent identity and naming via DNS and PKI including TLS certificate binding, TLSA DNS records, ACME-DNS-01 domain validation, and Merkle tree transparency logging. ANS establishes who an agent is and that it is cryptographically verified.</t>
				<t> AEPP provides the execution and payment layer that ANS does not define. ANS has no mechanism for expressing agent pricing, routing payment to agent operators, verifying payment before execution, or issuing execution receipts.</t>
				<t> An ANS-registered agent MAY expose an AEPP-compatible endpoint. AEPP complements ANS without replacing it. The combination of ANS identity verification and AEPP execution capability represents a complete agent deployment stack.</t>
			</section>
			<section anchor="sect-12.2" numbered="true" toc="default">
				<name>DNS-AID</name>
				<t> DNS-AID provides agent discovery via DNS records. AEPP provides execution once an agent is discovered via DNS-AID. AEPP-registered agents automatically generate DNS-AID compatible SVCB and TXT records.</t>
			</section>
			<section anchor="sect-12.3" numbered="true" toc="default">
				<name>W3C DID</name>
				<t> Every AEPP agent endpoint is associated with a W3C Decentralized Identifier. The DID document is resolvable at the agent's .well- known endpoint. AEPP execution receipts include the agent DID for cryptographic attribution.</t>
			</section>
			<section anchor="sect-12.4" numbered="true" toc="default">
				<name>x402 and L402</name>
				<t> AEPP builds on the HTTP 402 payment challenge pattern established by x402 and L402. x402 is blockchain-agnostic and supports all EVM- compatible chains, Solana, and traditional payment methods via extension. AEPP extends x402 with agent-specific fields, payment scheme enumeration, on-chain verification requirements, and execution receipt standardization.</t>
				<t> The PAYMENT-REQUIRED header and WWW-Authenticate header formats follow x402 conventions.</t>
			</section>
		</section>
		<section anchor="sect-13" numbered="true" toc="default">
			<name>Security Considerations</name>
			<t> AEPP security is fundamentally bound to the DNS configuration of the namespace holder. DNS spoofing or cache poisoning attacks could allow an attacker to temporarily intercept resolution paths and redirect endpoints to malicious resolvers. For this reason, namespaces handling high-value execution tasks SHOULD enforce DNSSEC validation within their zones.</t>
			<t> On-chain transaction state tracking represents an operational edge vulnerability if transaction monitoring falls out of synchronization with the parent blockchain network. To eliminate network partitioning edge errors, agents MUST verify transactions across multi-node provider configurations before issuing final execution states.</t>
		</section>
		<section anchor="sect-14" numbered="true" toc="default">
			<name>IANA Considerations</name>
			<t> This document requests IANA to register the provisional 'ae' URI scheme in accordance with RFC 7595 guidelines. Scheme syntax and characteristics are defined fully in Section 3 of this document. No central registration authority or administrative management entity is requested, as operations are completely federated via the standard internet Domain Name System.</t>
		</section>
	</middle>
	<back>
		<references>
			<name>References</name>
			<references>
				<name>Normative References</name>
				<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
					<front>
						<title>Key words for use in RFCs to Indicate Requirement Levels</title>
						<author initials="S." surname="Bradner" fullname="S. Bradner"/>
						<date month="March" year="1997"/>
					</front>
					<seriesInfo name="BCP" value="14"/>
					<seriesInfo name="RFC" value="2119"/>
				</reference>
				<reference anchor="RFC7595" target="https://www.rfc-editor.org/info/rfc7595">
					<front>
						<title>Guidelines and Registration Procedures for URI Schemes</title>
						<author initials="D." surname="Thaler" fullname="D. Thaler"/>
						<date month="June" year="2015"/>
					</front>
					<seriesInfo name="BCP" value="35"/>
					<seriesInfo name="RFC" value="7595"/>
				</reference>
			</references>
		</references>
	</back>
</rfc>