The Front Door Problem: Why Scraping and Computer Use Are Architectural Dead Ends
The early wave of autonomous agent design embraced an inherently adversarial premise: treat the entire web as an immutable human-facing interface, spin up a headless browser, and simulate mouse clicks across the DOM. We have seen this manifest in projects ranging from Anthropic Computer Use to OpenAI Operator. While vision-driven browser automation offers day-zero reach without requiring permission or custom APIs, my view is that relying on synthetic human emulation for transaction-critical enterprise commerce is an architectural dead end.

In production, DOM-scraping agents break the moment a frontend team tweaks a class name or refactors a checkout modal. Worse, they provoke an escalating arms race with edge security vendors. Bot mitigation systems like Cloudflare and Akamai exist precisely to identify and neutralize non-human request patterns, forcing automated runners into brittle CAPTCHA-solving detours and proxy rotation schemes. Beyond the operational instability, handing an agent raw end-user credentials or session cookies creates an unacceptable security and liability posture. If a model running in an autonomous event loop hallucinates during checkout, the business has no native way to parse intent, enforce step-up authorization, or untangle liability.
The introduction of the Personal Agent Protocol (Poppy)—published jointly by Sierra and Meta under the Apache 2.0 license—flips this paradigm on its head. Bret Taylor and Clay Bavor’s core thesis is simple: businesses do not inherently hate automated traffic; they hate unidentifiable, unpredictable, and unmetered scrapers hammering their checkout funnels. When an agent identifies itself, respects declared boundaries, and operates through an auditable channel, enterprise brands actively want that traffic.
Poppy replaces adversarial evasion with cooperative delegation. It establishes an explicit front door—or side entrance—for Agent-to-Business (A2B) interaction. Rather than asking personal assistants to emulate ocular human browsing, Poppy gives commercial services a standardized way to advertise their capabilities, demand cryptographic proof of identity, and constrain actions to explicit scopes. For teams building autonomous agent runtimes, this shifts the operational burden away from brittle visual parsing and toward deterministic, policy-controlled protocol interactions.
Anatomy of the Poppy Stack: How Discovery, DPoP, and MCP Compose
When evaluating new protocols in the agentic ecosystem, my default skepticism triggers whenever a draft attempts to invent proprietary transport layers, custom cryptography, or greenfield wire formats from scratch. Poppy avoids this trap entirely. In Draft 0.1, its technical strength lies in pragmatic composition: it stitches together five battle-tested web standards into a coherent contract.
┌─────────────────────────────────────────────────────────────┐
│ Execution Layer │
│ OpenAPI Endpoints / MCP Tool Servers │
├─────────────────────────────────────────────────────────────┤
│ Proof-of-Possession │
│ DPoP (RFC 9449 Key-Bound Proofs) │
├─────────────────────────────────────────────────────────────┤
│ Identity & Delegation │
│ OAuth 2.0 / JSON Web Tokens │
├─────────────────────────────────────────────────────────────┤
│ Discovery Layer │
│ /.well-known/poppy.json │
└─────────────────────────────────────────────────────────────┘
The protocol organizes into four discrete layers:
- Standardized Service Discovery (
/.well-known/poppy.json): Everything begins at the domain apex. A merchant hosts a machine-readable JSON manifest that declares supported capabilities, OAuth token endpoints, supported delegation scopes, and references to tool catalogs. It acts as the DNS-adjacent routing table for autonomous agents. - Federated Identity & Delegation (OAuth 2.0 / JWT): Instead of reinventing auth, Poppy relies on the standard OAuth 2.0 authorization framework. The end customer authenticates directly with the service provider through standard web redirect screens, granting the client bounded, task-specific scopes rather than naked account access.
- Cryptographic Proof of Possession (DPoP): Bearer tokens are notoriously fragile in distributed agent pipelines. If a token leaks from an agent harness or intermediary proxy, anyone can replay it. Poppy mandates RFC 9449 (Demonstrating Proof-of-Possession at the Application Layer), binding the issued access token directly to an asymmetric key pair held by the specific client instance.
- Interface Execution (OpenAPI and MCP): Once authorized, the agent does not execute actions through arbitrary text generation. It calls structured endpoints defined via OpenAPI specifications or invokes tool definitions exposed through Model Context Protocol (MCP). Poppy does not compete with MCP; it uses MCP as the runtime execution layer for agent tool invocations, solving the cross-domain authorization problem that MCP deliberately leaves out of scope.
This composition represents a deliberate engineering trade-off. Choosing architectural pragmatism over a novel, greenfield agent protocol means inheriting all the operational friction of OAuth: redirect flows, refresh token state management, and user consent prompts that can disrupt headless agent execution. However, this trade-off is precisely why Poppy is immediately deployable. Enterprise engineering teams do not need to rewrite their underlying security architectures or scrap existing API gateways; they can stand up a Poppy manifest in front of their current infrastructure with minimal friction.
The Session Lifecycle: From Guest Probing to Key-Bound Delegation
The operational core of Poppy Draft 0.1 is its progressive trust model. An agent does not need full credential delegation merely to ask about flight schedules, product inventory, or return policies. Poppy formalizes this progression from unauthenticated guest discovery to key-bound execution through a structured sequence.
sequenceDiagram
autonumber
actor User as End User
participant Agent as Personal Agent Runtime
participant PoppyEndpoint as Service Discovery (/.well-known/poppy.json)
participant AuthServer as OAuth / Authorization Server
participant Gateway as Enterprise Gateway (MCP / API)
%% Discovery
Agent->>PoppyEndpoint: GET /.well-known/poppy.json
PoppyEndpoint-->>Agent: Return manifest (auth URLs, public MCP tools, scopes)
%% Guest Interaction
Agent->>Gateway: Query guest capability (e.g., catalog search)
Gateway-->>Agent: Public catalog results
%% Handoff to Auth
Note over Agent: Task requires private data (e.g., order lookup)
Agent->>User: Request authorization to access service
User->>AuthServer: Authenticate & approve bounded scopes
AuthServer-->>Agent: Authorization Code
%% Token Exchange with DPoP
Note over Agent: Generate ephemeral asymmetric key pair
Agent->>AuthServer: POST /token + DPoP Proof JWT (public key bound)
AuthServer-->>Agent: Access Token + Refresh Token (DPoP-bound)
%% Authorized Execution with Nonce Handshake
Agent->>Gateway: Execute MCP Tool Call (Bearer Token + DPoP Proof JWT)
Gateway-->>Agent: HTTP 401 Challenge (use_dpop_nonce: "xyz789")
Note over Agent: Re-sign DPoP Proof JWT with received server nonce
Agent->>Gateway: Retry MCP Tool Call (Token + Fresh DPoP Proof with nonce)
Gateway-->>Agent: Tool execution payload / structured response
The cycle begins in the guest state. The personal agent fetches https://example.com/.well-known/poppy.json. The manifest advertises unauthenticated endpoints alongside authentication parameters. In this unauthenticated mode, the agent probes public capabilities—retrieving product variants or querying an enterprise-hosted guest MCP server—without touching user credentials or triggering privacy boundaries.
When the user asks the agent to perform an account-specific task—such as checking the status of order #8842 or updating a shipping address—the lifecycle transitions into authenticated delegation. The agent initiates an OAuth 2.0 flow, directing the user to the enterprise authorization server. The human authenticates directly with the brand, consenting to discrete scopes (such as orders:read or deliveries:reschedule).
Upon receiving the authorization code, the agent generates an asymmetric key pair in its local runtime. During the token exchange, the agent passes its public key inside a DPoP proof header. The authorization server returns an access token that is cryptographically bound to that public key.
For every subsequent request to an MCP tool or OpenAPI endpoint, the agent must generate a fresh, short-lived DPoP proof JWT. This JWT contains the current HTTP method, the targeted URI, an issued-at timestamp, and a server-supplied nonce to prevent replay attacks. When the gateway returns a use_dpop_nonce challenge, the agent signs a fresh proof incorporating that nonce and retries the call. Through this handshake, even if an intermediary intercepts the network traffic, the captured bearer token remains completely useless without the agent's private signing key.
The Delegation Landscape: How Poppy Compares to Browser Agents and Walled Gardens
The problem of Agent-to-Business (A2B) delegation has fragmented the industry into divergent architectures. To evaluate where Poppy sits, I categorize current industry implementations into four distinct approaches: vision-based browser emulation, OS-level walled gardens, pure developer tool interfaces, and open delegated protocols.
| Paradigm / Approach | Credential Safety | Merchant Adoption Requirements | Anti-Bot Resilience | Cross-Platform Flexibility |
|---|---|---|---|---|
| Browser Emulation (OpenAI Operator, Anthropic Computer Use) | Poor: Requires sharing raw user passwords, cookies, or live browser sessions. | Zero: Operates on existing web interfaces without business participation. | Fragile: Continuously trips CAPTCHAs, bot heuristics, and Cloudflare challenges. | High: Can execute on any desktop or headless browser runtime. |
| OS Walled Gardens (Apple App Intents, Android Extensions) | High: Leverages secure hardware enclaves and native OS biometrics (FaceID). | Moderate to High: Developers must build and package platform-specific native intents. | Immune: Traffic runs locally on-device through installed native applications. | None: Locked strictly to host OS hardware and ecosystem boundaries. |
| Pure Tool Interfaces (Standalone MCP) | Neutral: Out of scope; relies entirely on the host application's environment. | Low: Requires exposing a JSON-RPC tool server endpoint. | High: Direct API/RPC calls bypass web-layer bot detection. | High: Host-agnostic protocol supported across diverse runtimes. |
| Open Delegated Protocols (Poppy Draft 0.1) | High: Bounded OAuth scopes paired with asymmetric DPoP proof-of-possession tokens. | High: Merchants must host poppy.json, OAuth flows, and scoped API endpoints. |
Immune: Traffic is self-declared, authenticated, and explicitly invited. | High: Open web architecture executable across cloud, mobile, or local runners. |
The trade-off here is stark: universal day-zero utility paired with severe fragility versus deterministic protocol stability gated by a brutal cold-start adoption barrier. Browser emulators like Operator and Computer Use solve immediate distribution because they require zero permission from Target or United Airlines. But you pay for that distribution with brittle DOM parsing, high vision token costs, and an endless cat-and-mouse dynamic against edge security filters.
Walled gardens take the opposite route. Apple App Intents provide rock-solid reliability by keeping actions entirely local. But if I am architecting an agent that spans a cloud backend, a local Linux workstation, and a mobile client—a design pattern I examined when dissecting cross-device agent runtimes—a closed mobile framework leaves me stranded outside its gates.
This is why Poppy’s relationship with Model Context Protocol is cooperative rather than competitive. MCP deliberately solves how a model queries context and invokes tools; it intentionally avoids solving cross-domain delegated identity, multi-tenant public discovery, and commercial authorization boundaries. Poppy supplies the missing trust architecture: it wraps MCP inside standard discovery (/.well-known/poppy.json) and cryptographic delegation (OAuth plus DPoP), turning an internal developer tooling primitive into an auditable enterprise gateway.
Production Failure Modes: Where Poppy Breaks in Real-World Workflows
Despite the elegance of its specification, deploying Poppy Draft 0.1 into production exposes acute operational friction. The protocol composes mature web standards, but when those standards collide with the asynchronous realities of always-on agent loops, several failure modes emerge.
stateDiagram-v2
[*] --> UnauthenticatedProbing
UnauthenticatedProbing --> InteractiveConsentHold : Scope requires private data
UnauthenticatedProbing --> FailedDiscovery : Invalid poppy.json
InteractiveConsentHold --> ActiveSession : User completes OAuth redirect
InteractiveConsentHold --> StalledSession : User offline / prompt ignored
state ActiveSession {
[*] --> SignDPoPProof
SignDPoPProof --> DispatchRequest : Fresh asymmetric JWT generated
DispatchRequest --> ProcessPayload : HTTP 200 OK
ProcessPayload --> SignDPoPProof : Next task step
}
ActiveSession --> NonceRenegotiation : HTTP 401 (use_dpop_nonce challenge)
NonceRenegotiation --> ActiveSession : Retry with server nonce
ActiveSession --> ClockDriftDesync : Timestamp skewed > leeway window
ActiveSession --> TokenExpiry : Refresh token invalid / expired
StalledSession --> [*]
FailedDiscovery --> [*]
TokenExpiry --> [*]
ClockDriftDesync --> [*]
The first systemic failure point is the interactive OAuth stall. Personal agents deliver real leverage when operating unattended in background event loops—monitoring flight cancellations, tracking restocking schedules, or filing return requests. When an agent hits a protected scope or an expired refresh token during an asynchronous run, Poppy forces a traditional redirect flow. If the end user is asleep or away from their screen, the agent blocks indefinitely. Without native asynchronous approval primitives, engineering teams must build out-of-band notification fallbacks into mobile push channels to rescue paused workers.
The second failure mode stems from DPoP cryptographic state desync. DPoP mandates that the agent runtime sign every outbound HTTP request with a short-lived proof JWT tied to an asymmetric private key, factoring in the target URI, method, timestamp, and a gateway-provided nonce. In serverless or multi-worker agent deployments where execution bounces across ephemeral containers, private key persistence becomes a bottleneck. If worker nodes experience minor NTP clock drift, the gateway's strict timestamp validation rejects proofs instantly, triggering perpetual nonce-negotiation loops that degrade tool latency.
Third is context-window blowout via unchecked discovery. When an agent reads poppy.json and loads an advertised OpenAPI or MCP catalog, large enterprises often expose dozens of services with deeply nested schemas. Dumping an uncurated enterprise catalog into an LLM’s context window squanders tens of thousands of tokens, dilutes system prompts, and provokes hallucinated function arguments.
Finally, Poppy allows agents to interface directly with an enterprise's own conversational bot. In practice, pitting an autonomous personal agent against an enterprise customer support bot without rigid, typed schemas produces conversational deadlocks. Both models polite-loop each other with acknowledgments and ambiguous clarifications, or enterprise bots issue conversational commitments that fail to execute against back-office transaction rails.
Enterprise Hardening: Gateway Architecture, Schema Slicing, and Non-Repudiation
For teams implementing the service-provider side of Poppy, exposing internal APIs directly to autonomous agent traffic requires defensive infrastructure hardening.
┌─────────────────────────────────────────────────────────────┐
│ Enterprise Edge │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ API Gateway Layer │ │
│ │ - Terminate RFC 9449 DPoP Proofs & Verify Nonces │ │
│ │ - Enforce OAuth Token Introspection & Scopes │ │
│ │ - Audit Logger (Session ID + DPoP Key Fingerprint) │ │
│ └──────────────────────────┬──────────────────────────┘ │
└──────────────────────────────┼──────────────────────────────┘
│
┌──────────────────┴──────────────────┐
▼ ▼
┌──────────────────────────────┐ ┌─────────────────────────┐
│ Sliced Micro-Tools │ │ Step-Up Auth Engine │
│ Minimal, Task-Scoped MCP │ │ Triggers Human Review │
│ (Filtered Parameter Schemas)│ │ on Destructive Actions │
└──────────────────────────────┘ └─────────────────────────┘
My strongest recommendation is to terminate DPoP verification exclusively at your API gateway layer. RFC 9449 requires verifying asymmetric signatures, enforcing strict replay caches, tracking issued nonces, and validating URI claims on every single request. Attempting to implement this cryptographic handshake inside distributed downstream microservices introduces latency and inconsistent security policies. Offload DPoP validation at Kong, Envoy, or Cloudflare, and translate verified incoming requests into standard, trusted downstream service tokens before routing internally.
Second, practice aggressive schema slicing. Never point your poppy.json manifest to your complete, monolithic OpenAPI specification. Exposing a hundred raw CRUD endpoints to an external model invites prompt degradation and unpredictable execution paths. Instead, compile minimal, task-scoped MCP tool interfaces specifically tuned for deterministic LLM function calling. If a customer agent needs to reschedule an order, expose a dedicated, single-purpose tool with five strictly validated parameters rather than your internal PUT /v2/orders/{id} endpoint.
Finally, non-repudiation requires purpose-built audit architectures. When an autonomous agent cancels a non-refundable booking or modifies shipping data, business operations must prove whether the transaction originated from an authorized user delegation or an erratic model loop. Your gateway must bind the client’s public DPoP key fingerprint, the OAuth authorization session ID, the target tool invocation payload, and the client agent identifier into an immutable, append-only audit log. Pair this with step-up verification policies: whenever an agent attempts high-risk or irreversible mutations, return an explicit HTTP 401 challenge demanding fresh human re-authentication, preventing autonomous hallucination from becoming enterprise liability.
What to Build Today: Concrete Reference Implementations for Practitioners
Waiting for broad merchant adoption before architecting for Poppy is a mistake. The Draft 0.1 specification gives us enough mechanical clarity to build the foundational primitives right now, positioning our runtimes for authenticated delegation while insulating backends from agent traffic volatility.
On the provider side, the most immediate pattern teams should stand up is a stateless Poppy discovery and DPoP verification gateway. Rather than forcing downstream application services to grapple with cryptographic overhead, you can build a lightweight reverse proxy in Go or FastAPI that sits at your domain edge. This proxy hosts /.well-known/poppy.json, terminates RFC 9449 proof-of-possession handshakes, and validates asymmetric JWT signatures before proxying clean requests to upstream REST microservices. Backing this proxy with a Redis cluster lets you track single-use server nonces and defend against replay attacks. The primary operational trap here is clock drift: client runtimes operating across heterogeneous cloud infrastructure will frequently skew past strict timestamp validation windows, causing legitimate requests to bounce. Maintain a bounded leeway window on proof timestamps, and ensure ephemeral server nonces enforce strict TTL expiration so your cache state never balloons.
To complement edge verification, enterprises with sprawling API surfaces must avoid dumping monolithic specs onto external models. A high-leverage component to build is a dynamic task-scoped MCP schema slicer. This service ingests your internal OpenAPI 3.1 definitions, parses route hierarchies, and compiles them down into stripped, task-specific MCP tool manifests served on demand. Wiring this pipeline with token-counter middleware guarantees that tool schemas remain bounded within reasonable context budgets. The tension you will navigate is semantic resolution: prune your parameters too aggressively and the agent model lacks sufficient nuance to formulate deterministic function calls; expose too much and you trigger context-window blowout and degraded planning.
For client-side runtimes executing unattended tasks, the chief architectural barrier is surviving interactive authentication interruptions. Practitioners can address this by implementing an autonomous out-of-band OAuth consent broker. When a background agent encounters an HTTP 401 step-up authorization challenge or an expired refresh token, this daemon traps the exception, generates an OAuth 2.0 PKCE redirect bundle bound to the agent’s local DPoP key, and dispatches a push notification with an actionable approval link directly to the user’s mobile device. The runner enters a graceful paused state rather than dropping execution. The failure mode to guard against is deadlocked worker threads: uncompleted mobile consent flows will leave background tasks hanging indefinitely unless you back the broker with explicit execution deadlines, cancellation fallbacks, and persistent session state.
The Road to 1.0: Financial Settlement, Semantic Scopes, and the Cold-Start Moat
To graduate from an exploratory working draft into an enduring web standard, Poppy must resolve three fundamental architectural deficits.
The most glaring gap in Draft 0.1 is the complete absence of native cross-agent financial settlement. A personal agent that can look up reservations and check delivery schedules delivers convenience; an agent that can negotiate terms, commit funds, and complete checkout delivers commerce. Right now, closing the transaction loop forces agents to fall back onto human web redirects or piggyback on fragile merchant card-on-file APIs. Without protocol-level settlement primitives that resolve payment routing, merchant chargeback liabilities, and Strong Customer Authentication (SCA) compliance natively across agent boundaries, Poppy remains a delegation layer rather than a transactional engine.
Second, classical OAuth 2.0 scopes are structurally mismatched with probabilistic agent decision-making. Static, coarse-grained permission strings like orders:write or calendar:update were designed for deterministic API clients. They have no vocabulary for probabilistic bounds—such as permitting an agent to cancel a flight only if the associated penalty fee is zero, or allowing a booking modification provided the total price difference remains under fifty dollars. Shifting this policy enforcement entirely to downstream merchant endpoints forces every service team to invent ad-hoc parameter inspection. For 1.0, Poppy needs a structured grammar for expressing semantic, constraint-aware execution boundaries directly within the delegation grant.
Finally, Poppy faces a brutal cold-start adoption moat. Federated identity and agent delegation protocols are historic graveyard territory; open specs routinely die because merchants refuse to prioritize integration work for nonexistent traffic, while developers refuse to build protocol-compliant clients for merchants with empty endpoints.
What gives Poppy a legitimate fighting chance where predecessors stalled is its coalition of over 35 heavyweight launch partners. When a consortium simultaneously bundles Sierra, Meta, Stripe, Shopify, Visa, and Walmart, the adoption vector shifts from theoretical academic debate to distribution leverage. If Shopify exposes /.well-known/poppy.json natively across its merchant ecosystem and Stripe bridges payment tokenization into the flow, the protocol achieves critical mass overnight. Ultimately, Poppy's survival hinges on commercial alignment: merchants must realize that authenticated, bounded agent traffic represents high-intent revenue rather than an operational nuisance to be throttled at the firewall.
Resources
Updated 2026-10-08 by Mehran Mozaffari.
Related posts
1 November 2026
Code Mode vs Function Calling for Multi-Step Agents
1 November 2026
Offline Trajectory Scoring Replaces the Prompt Engineering Treadmill
1 November 2026
Should You Build Your Enterprise Agent Semantic Layer on NVIDIA Auto Ontology? Not Yet
31 October 2026
Unreal Engine Skills for Claude Code: How Epic Bypassed the Binary Asset Barrier to Mutate Live Viewports
30 October 2026
Agent Memory Was an Indexing Problem All Along
29 October 2026
How 3D OS Turns a Coding Agent into a Six-Department Animation Studio Without a GUI
