Private beta · integrate capabilities, not products

One API for every enterprise system your agent touches.

Your agent calls a capability — crm.update(), ticket.create(), chat.send(). OpenConnection routes each call to whatever system that customer actually runs. Same code for Salesforce, HubSpot, or Dynamics.

You're on the list. We'll reach out with early access.
Open-source SDK  ·  TypeScript first  ·  No credit card
agent.ts
1// the agent never names a vendor
2await oc.crm.update(customer, {
3  email: "ada@acme.com",
4  stage: "qualified",
5  value: 48000
6})
Same call · routed per customer policy
crm.update ──► Salesforce
The problem

Every agent builder is rewriting the same five integrations.

Agents are suddenly the consumer — generating high-volume write actions across every customer's stack. But each customer runs a different CRM, a different ticketing tool, a different chat system. Today that means N integrations per capability, built and maintained by you.

01

Product-shaped, not capability-shaped

iPaaS and MCP servers still make you connect "to Salesforce" and learn its object model. Multiply that by every vendor each customer happens to use.

02

Write actions are the hard part

Read-normalization tools skip the dangerous half. Idempotency, partial failures, approvals, and audit differ per system — and they're on you.

03

Switching a customer means changing code

A customer moves from Salesforce to HubSpot and your integration breaks. The vendor leaked into your agent logic where it never belonged.

Capabilities, not connectors

Target a verb. We route it to the vendor.

Three primitives are all you work with. Your agent code stays identical across every customer — the mapping lives in policy, not in your codebase.

v()

Capability verbs

A small, stable vocabulary — crm.upsert_contact, ticket.create, chat.send, email.send — each with one normalized schema.

{ }

Providers

Per-system adapters that implement the verbs. Salesforce, HubSpot, Jira, Slack — each owns its own auth, quirks, retries, and error mapping.

Connections

A customer's authorized instance of a provider. A routing policy maps crm.* to it. Change the policy, not the agent, to switch vendors.

No lowest-common-denominator

A clean common path — without giving up provider-native power.

The trap with unified APIs is exposing only what all vendors share. OpenConnection gives you three tiers in a single call, so you're never forced to leave the platform to reach a Salesforce-only field.

Common core
The normalized verb that works everywhere. crm.update({ email, stage, value }) behaves the same across every provider you route to.
Typed extensions
Optional, typed fields that many — not all — providers support. Discoverable in the SDK, safely ignored where a provider can't honor them.
Escape hatch
Direct provider-native access via raw passthrough when you need a vendor-specific feature — while keeping auth, logging, and governance intact.
Governed writes

Because letting an agent write to production systems should be safe.

This is the part read-only unified APIs never had to solve. Every action passes through a governance layer built for agents that change real data.

Idempotency

Every write carries an idempotency key, so retries are safe and duplicates never reach the underlying system.

Dry-run & preview

Resolve and validate an action against the target system without committing it — see exactly what would happen first.

Human-in-the-loop

approval.request → wait → resume. Pause any action for a person to approve before it commits.

Full audit trail

Per-call logs, latency, normalized errors, and cost attribution per tenant — every action accounted for.

v1 coverage

Four capabilities. The systems your customers already run.

crm.*
Salesforcelive
HubSpotlive
Dynamicssoon
ticket.*
Jiralive
Linearlive
Zendesksoon
chat.send
Slacklive
Teamslive
Discordsoon
email.send
Gmaillive
Outlooklive
SESsoon
Adapters are the extensible unit — open framework, community-contributed, growing every week.
Private beta

Stop integrating products. Start integrating capabilities.

We're onboarding a first group of agent builders. Get early access to the SDK, help shape the verb vocabulary, and integrate once instead of five times.

You're on the list. We'll reach out with early access.
Open-source SDK  ·  TypeScript first  ·  No credit card