Skip to content

unified.to evaluation: stay on Composio

ADR-056 — unified.to evaluation: stay on Composio

Status: Accepted 2026-05-18 Context: ADR-053 (Lean stack: Composio + Mem0 + Anthropic) — Composio is canonical OAuth-SaaS layer

Context

unified.to (https://unified.to) is a managed integration platform that surfaces 440+ vendor APIs through MCP and REST, with two distinguishing characteristics vs Composio:

  1. Normalized schemas across vendors — 2,100+ unified data objects so one query against the “CRM” object returns the same shape whether the customer is on HubSpot, Salesforce, Pipedrive, or Zoho.
  2. Stateless / data-access-heavy positioning — virtual webhooks for real-time data, designed for “consume customer data without standing up storage.”

Pricing (verified 2026-05-18):

  • Grow: $750/mo — 750K API calls/mo, unlimited customer connections, $1/1000 overage.
  • Scale: $3000/mo — 6M API calls/mo, $0.50/1000 overage.
  • Enterprise: custom.
  • 30-day free trial.

Ascend’s current state (post-PR #564): Composio carries 18 active connections across two tenants (Ascend, Kahuna), zero marginal cost per additional tenant, action-execution-heavy GTM workflows (HubSpot writes, Salesforce SOQL, Google Ads mutations, Slack sends, Apollo enrich, Gong fetches).

Decision

Stay on Composio. Do not switch or augment with unified.to.

Comparison

DimensionComposiounified.toWinner
Marginal cost per new tenant$0Capacity-share against $750/mo floorComposio
Floor costCurrent (covered)$750/moComposio
Positioning fit for Ascend workloadsAction-execution-heavy (writes, queries, mutations)Data-access-heavy (normalized reads)Composio
Vendor breadth982+ toolkits, 20,000+ curated actions440+ integrations, 22,566 callable tools, 2,100+ normalized objectsComposio for action breadth
MCP supportNative (SSE)NativeTie
Per-end-customer routinguser_id={slug} per call (shipped in PR #564)Unlimited customer connectionsTie
Invariant 5 (no tokens in our KV)✅ tokens in Composio✅ tokens in unified.toTie
Schema normalization across vendors❌ vendor-specific slugs✅ unified objectsunified.to (not a current requirement)
Switching cost from current state$0Throw away PR #564 + re-OAuth 18 connections + rewrite client.ts, auth-configs.json, routing-write.tsComposio

Decisive factor

The “scalability” problem that drove PR #564 (referenced by the driving question on ~/.claude/plans/are-we-connected-to-greedy-kitten.md) was manual onboarding labor, not coverage or schema mismatch. The onboarding CLI (~60 min → ~7 min, 1 click per tool from the client) eliminates that cost. unified.to’s normalized-schema value-add does not move that meter; it solves a different problem (multi-CRM read normalization) that no Ascend workflow currently has.

Every Ascend automation is vendor-specific: HubSpot for Ascend, Salesforce + HubSpot for Kahuna, Google Ads mutations against named accounts, Slack into specific channels, Apollo lookups returning Apollo-shaped contacts. A unified CRM read object would be paid-for and unused.

Triggers for re-evaluation

Re-evaluate unified.to when any of:

  1. Cross-vendor normalization becomes a real product requirement — e.g., a client demands a single query returning contacts from any of HubSpot/Salesforce/Pipedrive/Zoho with the same shape, or we ship a feature that ingests CRM data from N different vendors.
  2. Composio raises prices materially above the $0 marginal we currently see, or removes a critical capability we depend on.
  3. A capability gap appears that Composio refuses to close within 30 days (per ADR-053 escalation rule for new SaaS needs).

Consequences

  • Continue executing on PR #564 onboarding CLI and docs/composio/onboarding.md golden path.
  • No vendor evaluation work scheduled.
  • This ADR is the record so the next session does not re-evaluate from scratch.