Skip to main content

Protocol coverage

The SDKs target Personal Agent Protocol draft 0.1, updated October 9, 2026. The upstream draft remains authoritative. This page records the surface that the implementation and conformance suite must eventually cover.

Sources​

The repository records the reviewed upstream revision in protocol/UPSTREAM.md and maps individual normative requirements in protocol/requirements.yaml.

The shared fixture corpus now covers discovery, OAuth metadata, client metadata, session-token responses, conversation event pages, and Operations objects. Both SDKs preserve unknown compatible fields and event types while validating the required shape of known types.

Coverage by area​

Every entry of protocol/requirements.yaml, one page per area, with its upstream section, normative level, SDK symbols, tests and status. The Guides' recommendations are on their own page, apart from the specification's MUSTs and SHOULDs.

AreaEntriesImplementedPartialOpenNot applicable
Discovery1615100
Identity and Sessions2726001
Sign-in and Account Tokens2217221
Browser1212000
APIs66000
Conversations1816002
Operations1816200
Operational guidance4132450

Required surface​

AreaRequired behavior
DiscoveryFetch /.well-known/poppy.json; validate domain, supported major version, HTTPS redirects, interfaces, issuer, and extensions; cache within safe bounds.
Company identityFetch RFC 8414 metadata and bind the exact issuer to an authorized poppy_domains entry.
Personal-agent identityPublish and verify HTTPS client metadata, same-domain JWKS and redirects, and private_key_jwt authentication.
User identityMaintain one stable, opaque, non-personal ID per user and company issuer.
SessionsStart signed out, renew by session ID, preserve parallel sessions, and treat session tokens as opaque.
Proof of possessionBind non-MCP tokens to per-user/per-company DPoP keys; use a new proof per request and support nonces and replay protection.
Sign-inSupport direct authorization code with PKCE, device authorization, and mediated sign-in with protected one-time-code continuation.
Account accessStore rotating account tokens as secrets; exchange them only at the token endpoint; narrow scopes/resources and revoke on sign-out.
APIsUse DPoP for OpenAPI. Use resource-bound Bearer tokens only for the advertised MCP server.
WebJoin an isolated browser context to the session with a short-lived assertion and a validated return location.
ConversationsCreate, retry idempotently, read cursor events, poll or stream, identify speakers, hand off, sign in, and close.
ExtensionsNegotiate named major versions while ignoring unsupported extensions and unknown fields.
Operations v1Propose immutable revisions, obtain exact approval, confirm at most once, track, recover, and cancel across channels.

Coverage expectations​

The overview's principles—existing standards, user control, privacy, progressive adoption, and extensibility—must appear in defaults, APIs, examples, and Studio copy. Security guidance becomes automated tests wherever possible: secret redaction, safe metadata fetches, key and token custody, fresh proofs, retries, rate limits, sign-in preferences, consent presentation, and safe errors.

Operations is implemented as an optional Reactor-backed PAP extension: the client in Python and TypeScript, the company side in the Python reference company. Its conformance suite must cover exact revisions, ownership, expiry, idempotent confirmation, recovery, and cancellation regardless of the channel where an operation was proposed.

Where each area stands​

AreaPersonal-agent clientCompany sideRunnable flow
Discovery, identity, Sessions, DPoPPython and TypeScriptPython and TypeScript reference companiesCompany discovery, Session lifecycle
Direct and Device Sign-InPython and TypeScriptPython and TypeScript reference companies (own or hosted pages)Device Sign-In
Mediated Sign-InPython and TypeScriptPython and TypeScript reference companiesMediated Sign-In
Account TokensPython and TypeScriptPython and TypeScript reference companiesAccount Tokens
Conversations: messages, events, SSE, handoff, Direct, sign-in, closePython and TypeScriptPython and TypeScript reference companiesStreaming, control
Operations v1Python and TypeScriptPython and TypeScript reference companiesOperations
Web (Browser Session)Python and TypeScriptPython and TypeScript reference companiesBrowser Session
OpenAPI and MCPPython and TypeScript (ApiClient, McpClient, resource-bound Bearer)Python and TypeScript reference companiesTypeScript SDK

The end-to-end journeys, a user with a company and two companies (composition, not a draft 0.1 company-to-company feature), run in Python only, on the demo worlds in personal_agent_protocol.demo.

Deliberate boundaries​

Draft 0.1 does not define payments, push notifications, or message attachments. The SDKs preserve unknown extension data but do not invent wire formats for those areas. Company registration policy is also outside the protocol; implementations may expose allow/block policy without presenting it as a standard registration flow.

PAP complements rather than replaces MCP, OpenAPI, or peer-oriented agent protocols. PAP scopes express what the company permits. Host application rules express what the user permits. An action proceeds only when both allow it.