Official clients publish API 0.5.0
New · TypeScript SDK@plainrouter/sdk@0.5.0, Python SDK plainrouter==0.5.0, Go SDK github.com/plainrouter/sdk-go@v0.5.0, and CLI @plainrouter/cli@0.5.0 are published from the signed API contract. Install the CLI through npm or the official Homebrew tap with brew install plainrouter/tap/plainrouter. Choose an official client.Try the API without an account
New · The public sandbox now lets you validate an identity-free synthetic event without an account or credential. One read-only request also returns a short-lived sandbox key for testing bearer-authenticated client setup. Sandbox requests read no production data, persist nothing, and contact no advertising provider. Try the sandbox.Signal collection gets a fail-closed edge release
Security · Thev4.1.4 edge release accepts browser identity only after all three advertising permissions are granted under basis consent, rejects alternative caller-supplied identity bases, and keeps severed collection disabled when its private gate is missing or malformed. Same-origin forwarding probes now attest only the active secret and return a retryable error when tracker key storage is unavailable. Review Signals consent behavior.Compare Signal arrivals with platform-claimed clicks
New · The Signals dashboard now compares privacy-bounded observed arrivals with stored account-level platform clicks over the same fully retained daily period. It shows the difference and claimed-click proportion, includes a CSV export, and never makes a live Marketing API request while rendering or exporting. Interpret the comparison.Launcher batches gain MCP status and preflight preview
New · Agents can read bounded batch, item, partition, and linked-proposal status, then run the authoritative Launcher preflight gate without provider work. The discoverable execution entry remains deliberately closed and non-mutating during Phase B-1. Use the Launcher MCP workflow.Signal arrival verification is more durable
Improved · A verified managed-hostname arrival stays latched after recent activity ages out. During same-origin secret rotation, PlainRouter now acknowledges the new forwarding secret only after a successfully ingested authenticated arrival, so malformed or failed requests cannot end the overlap. Review serving verification.Strict-EU passive totals honor small-cell privacy
Privacy · Strict-EU passive activity contributes zero to displayed Signal totals until its aggregate cell reaches five arrivals. Passive rows remain identity-free, aggregate-only, absent from event-level APIs, and ineligible for Meta delivery. Interpret Signal activity.Passive Signal rows omit URLs and sources
Privacy · Passive severed rows now store neither a page URL nor a platform or channel source, and their rollups keep the source dimension empty. These arrivals remain identity-free, aggregate-only, and ineligible for Meta delivery. Review passive activity handling.Signal serving setup now adapts to your hosting stack
New · The Signals dashboard detects your hosting stack in the background and produces one copy-ready setup: a managed-hostname CNAME for platform-constrained sites or same-origin forwarding for Vercel, Netlify, Next.js, Cloudflare, Nginx, and Caddy. Same-origin installs include secret rotation and turn green only after a side-effect-free forwarding probe and the first authenticated arrival. Configure Signal serving.Signal activity includes privacy-bounded passive arrivals
Improved · Activity totals now include customer-visible passive arrivals without exposing them in event-level lists or detail APIs. Invalid traffic stays out of the totals, and strict-EU passive cells contribute only after their aggregate reaches five arrivals. Interpret Signal activity.New Signal installs use the v3 browser contract
Fixed · PlainRouter now generates/s/v3.js installation URLs across onboarding, hostname responses, and the dashboard fallback snippet. The v3 browser API accepts structured consent snapshots and fails closed when required advertising permissions are missing, unknown, denied, malformed, or withdrawn. Its v3.0.1 patch also preserves previously consented visitor state while a returning page waits for the consent platform to restore its decision; no measurement resumes before that decision arrives. Install the current pixel.Action verification commits atomically
Improved · Receipt state, verification results, terminal action state, and audit events now settle in one transaction. Persistence retries reuse durable classified evidence without repeating provider writes or reads, while verified creation evidence suppresses unsafe exhaustion compensation. Review verification and Landed.Spend proposals now require performance evidence
Improved · Signal health remains available for diagnostics, but it can no longer support budget, status, creative-spend, or mixed proposals. Agents must use eligible observed reconciliation data fromget_performance; modeled and portfolio-only events remain outside that evidence path. Upload-only asset proposals keep the narrow non-spend exception. Review the MCP evidence rules.Import Launcher drafts from CSV or XLSX
New · Write and Admin workspace tokens can create Launcher drafts throughPOST /mcp/launcher/import. The adapter accepts bounded CSV/XLSX files, reports invalid rows without hiding valid work, resolves only already-synced Drive assets in the token workspace, and deletes staged uploads after parsing. Read the import guide.MCP execution credentials fail closed
Security · OAuth management credentials are now rejected by default on MCP and agent-authenticated routes. The read-only agent-context route is the sole discovery exception; MCP tools require an account-bound workspace execution token whose tier is capped by the issuer’s current workspace role. Connect an agent.Actions and operational monitoring are more deterministic
Improved · PlainRouter now fixes proposal, provider-read, verification-slot, and cancellation processing to explicit domain order. WAL archive monitoring also distinguishes idle databases from stalled archiving and no longer prevents later scheduled work from running after an alert.Launcher draft batches arrive in MCP
New · Agents can uselauncher.draft_batch to turn already-synced Drive assets into a structured PlainRouter draft. It requires a Write or Admin workspace token and does not write to Meta or activate spend. Read the MCP reference.Consent-first Signals and simpler activation
New · Signal activation now uses an identity-free server verification event through REST or MCP, making the browser pixel optional for setup. Event ingestion now requires an explicit consent basis and fails closed before ineligible Meta delivery. See what changed in API 0.3.1.SDKs and CLI ship API 0.3.1
New · TypeScript SDK0.3.1, Python SDK 0.3.1, and CLI 0.3.1 are now published. Both SDKs expose all ten signed API operations, including ingestion verification and the consent-aware event contract. Choose a client.Stripe revenue waits for settlement
Improved · Stripe Checkout creates a purchase only after an exactpayment_status of paid. Failed, unpaid, free, missing, and malformed states stay out of the ledger, rollups, and Meta delivery. Review Stripe event behavior.