Segment and RudderStack, a Stripo email pushed into any ESP, and a DMARC check that was telling senders to break their own mail
This is eleven days of finished work arriving at once — most of it built on 24 and 25 August and not reachable from an install until now. Two new read-only CDP integrations, Segment and RudderStack, join Amplitude and Databricks on the shared data family, which is why two platforms cost 455 bytes between them instead of two thousand each. A finished Stripo email now pushes as a real template into Braze, Iterable, Klaviyo, Mailchimp and Salesforce Marketing Cloud rather than Braze alone. orbit_create_braze_canvas can duplicate a live canvas. And the release carries one fix worth reading before anything else: orbit_check_email_auth had been reporting p=none DMARC as failing the Gmail and Yahoo bulk-sender rules. Both specs explicitly allow it. Acting on that advice meant a production DNS change that can quarantine your own legitimate mail.
What shipped
•Fixed, and the most important line here — Orbit was wrong about DMARC. orbit_check_email_auth reported a p=none policy as non-compliant with the 2024 Gmail and Yahoo bulk-sender requirements, and the deliverability skill said p=quarantine was required. Google's guidelines say your enforcement policy "can be set to none"; Yahoo asks for at least p=none. Moving to quarantine before your aggregate reports show clean alignment silently quarantines mail you meant to send. The verdict stays a warning, because p=none genuinely stops nobody spoofing you — only the claim that it fails the rules was false, and Orbit's own deliverability skill had been saying the opposite three files away.
•New integrations — Segment and RudderStack, read-only by construction. Both are reachable through the same orbit_data_* tools as Amplitude and Databricks. Read-only is a design rule, not a gap: a CDP write issued by an unattended agent stays out of the loop. Amplitude's funnel and retention reads also became callable in this release — they existed as adapter code but were missing from the operation list the tools publish, so no user could reach them.
•Bug fix — the Amplitude and Databricks credential fields in the install dialog did nothing. The slots existed with correct titles and help text, and the wiring that carries the value into the running server was never added, so you could type your key, save, and have it go nowhere. Both halves are connected now, and the check covers every credential slot in both directions rather than the one that failed.
•A finished Stripo email pushes to any supported ESP. The push was Braze-only; the destination is now per-ESP, covering Braze, Iterable, Klaviyo, Mailchimp and Salesforce Marketing Cloud, with Stripo's separate stylesheet inlined so button and padding styling survives clients that strip head styles. Braze keeps its own path deliberately — it dedupes by name and refuses to overwrite a template Orbit did not create, neither of which the generic path can reproduce. Customer.io answers with its reason before asking for a credential, so a keyless install gets the honest answer rather than a setup prompt.
•Two ESP gaps closed. Customer.io template list, get and push, against its Design Studio API — with one caveat that rides on every push result: Customer.io can store content over the API but cannot publish it, so a pushed template lands unpublished and will not send until someone publishes it in the workspace. Salesforce Marketing Cloud gains segment listing (data extensions) and journey performance. Both platforms are still reported as partial support, because building an adapter does not change what the vendor's API can do.
•Braze canvases — as close to creation as the API actually allows. orbit_create_braze_canvas takes a source_canvas_id and performs a live duplicate, setting name, description and tags on the copy; without one it keeps the existing keyless path that builds the payload for the dashboard. Entry properties are validated on both paths against the 50KB cap, with a warning that matters more than it looks: without persistent entry properties, your values are readable only in the canvas's first step and every later step silently sees nothing. Two corrections came out of building it — the field on the trigger send is context, not canvas_entry_properties, and Braze's response to a duplicate carries no id for the new canvas, so the result says so instead of implying one.
•Behaviour fix — skills that blamed the vendor for gaps Orbit had already closed, and one that described a Braze endpoint that has never existed. Six files said Customer.io publishes no API to list or create templates; it does, and Orbit calls it. Four said Salesforce segments and performance were unsupported; both are built. braze-canvas-creator was worse: it documented a /canvas/create endpoint, a rate limit on that endpoint, and a success response carrying a new canvas id, none of which were ever real, and it told users to ask their Braze account manager to enable a product that does not exist. Rewritten, with a note recording what it used to claim. A tool name that was never registered had also leaked into two messages the extension shows you; it is gone.
•Two new skills — lifecycle-performance-report, a portfolio readout that keeps engagement, provable impact and qualitative signal separate because they degrade independently, and lifecycle-program-performance-report, a recurring executive report for estates that do not run holdouts. Both carry the editorial rules that stop a report misleading its own author: rates on delivered not sent, attributed revenue is never incremental, small-n rows labelled as anecdote, and contamination reported before content. Two other skills, braze-canvas-conformance and braze-claude-in-chrome-build, had shipped with zero trigger phrases each because the manifest builder only read double-quoted text — they now route on their own phrases rather than generic keyword overlap.
•A fresh install answers instead of interviewing you. orbit_route_task and orbit_list_skills were behind the setup intercept, so a first question like "why did my last send underperform" was deferred for a brand-kit interview nobody asked for — while the same product promised that two-thirds of it needs no credentials. Both now answer on turn one. Six tools keep the intercept, and should: a message plan built on default brand tokens is worse than a prompt to set up.
•Your own Orbit API key is optional, and Orbit now says so. A missing credential used to return "set your key" and stop, which is wrong advice for anyone already running that platform's own MCP server. The needs_setup response now names the alternative per platform, orbit_esp_capabilities reports it as data you can query, and Mailchimp is told the truth in the other direction — no first-party server exists, so Orbit's adapter is the only integrated path.
•Security hardening on three paths that took external input. A Stripo preview URL was fetched raw, so a URL pointing at a cloud metadata address or a private host was reached and reflected back; it now goes through the same guard as every other externally supplied URL. That guard itself resolved a hostname, validated the addresses, then discarded them and let the fetch resolve again — a low-TTL record could answer public once and private the second time. It now pins the validated addresses to the connection. And text imported from a Figma file or PDF is returned inside an envelope marked as data rather than instructions, so a crafted document cannot smuggle instructions to the model.
•Widgets, looked at rather than assumed. Every one of Orbit's 23 widgets was rendered and read for the first time — the test suite had only ever proved they do not throw, which is a different claim from "a user can read this". The review gallery's left rail no longer renders as bare dead space when there is nothing in it. Three widgets are flagged and deliberately not fixed: the ESP capability matrix, the client simulator and the render gate all shrink their main content area to almost nothing in a short pane, worst on the ESP matrix, which drops to column headers and no data rows. The data is correct in all three; it is a legibility bug. Two attempted fixes made it worse and were reverted, so the defect is documented rather than guessed at a third time.
•Smaller corrections you would have hit. The Amplitude documentation link cited as evidence on 14 capability rows was a 404, which is worse than no link because it looks checkable. The braze-namer skill sent you to a hostname that has never resolved; the app is at yourorbit.team/apps/namer. And the extension now ships a Braze API key permissions reference, because Braze scopes keys per endpoint, the choice is permanent once the key is created, and nothing in the product told you which boxes to tick.