Acquia Source × Bluefly: Research Reference¶
Updated: 2026-04-25 | Status: Reference | Owner: Thomas Scola
Production Requirement: An OSSA-compliant system MUST trace every action, attribute every cost, enforce every constraint, and expose every capability via contract.
Invariant: An agent that cannot be traced, cost-attributed, and constrained MUST NOT be deployed.
This document consolidates all research findings. It is not a plan — it is the evidence base that supports 01-STRATEGY through 04-PILOT-PROPOSAL.
Key Finding¶
No existing framework provides per-agent identity, enforced observability, or cost governance. They are orchestration libraries, not infrastructure. OSSA is the only model defining agents as observable, governable, addressable runtime services — not conceptual entities.
| Framework | Per-Agent Identity | Enforced Observability | Cost Governance | Execution Bounds | Verdict |
|---|---|---|---|---|---|
| LangGraph | No | Optional | No | No | Orchestration library |
| CrewAI | No | Optional | No | No | Orchestration library |
| AutoGen | No | Optional | No | No | Orchestration library |
| Acquia AI (built-in) | Proprietary | Proprietary | No | Partial | Platform-locked |
| OSSA | GAID/DID | REQUIRED | REQUIRED | REQUIRED | Infrastructure layer |
OSSA does not compete with frameworks. It is the control plane above them. Frameworks become execution engines beneath OSSA.
Acquia Source: Platform Facts¶
What Source Is¶
- SaaS CMS built on Drupal CMS + Drupal Canvas (Experience Builder)
- Launched ~2025. Fully managed. No contrib modules. No server access.
- Customization through Canvas components (React/JSX), content modeling, JSON:API
- AI-powered: writing assistant, AI Copilot (chat-based component building), AI site building agents (shipped Dec 2025)
- 4 site templates: Blank, Acquia Site Template, CPG Multi-Brand, Eudaimonia University
Standard Entitlements (Per Site)¶
- 250K monthly views, 25GB database + 25GB filesystem
- 18M AI tokens/year, 85K monthly searches
- 99.95% uptime SLA
- Multi-region: US East, EU Central, AUS (AI backend US East only)
- Global CDN
Canvas CLI Details¶
@drupal-canvas/cliv0.10.0- React/JSX components built externally, pushed via
canvas push - OAuth scopes:
canvas:js_component,canvas:asset_library,canvas:page:create/read/edit - Component prop descriptions ARE the AI instructions ("Configuration IS the Prompting layer")
- Single component library shareable across multiple sites
- Source explicitly supports external AI coding environments
Acquia AI Tiers¶
Tier 1 — Canvas AI ("The Insider Assistant"):
- Tool-calling orchestrator with agent crew (Orchestrator/Manager, Component Agent/Architect, Page Builder/Assembler, Template Builder/Globalist, SEO Agent/Optimizer)
- Capability binding: create_new_component, edit_js, set_structure, set_template_data, edit_field_content, add_metadata
Tier 2 — AI Builder ("The Outside-In Developer"): - Local IDE (Cursor/VS Code) with MCP connections to GitHub, Web migration, Figma - Scaffolds entire sites via Storybook + FCU components - Explicitly ungoverned — "Unlimited Freedom"
Tier 3 — Acquia AI / Command Center ("DXP for Agents and Humans"): - Digital Teammates with configurable instructions, resources, workflows, approval gates - Scales to thousands of sites - Proprietary governance (Pending Approvals, Workflows)
Extension Surfaces (Confirmed)¶
| Surface | Availability |
|---|---|
OAuth 2.0 (client_credentials) |
Available — scoped tokens |
| JSON:API (full CRUD) | Available — content, media, taxonomy, users, menus |
| Webhooks (outbound) | Available — create/update/delete events |
| Canvas CLI | Available — canvas push, canvas validate, canvas build |
| OpenAPI docs | Available — in-product API documentation |
Key Technical Insight¶
Source's "creating components with AI" documentation warns that role permissions for the OAuth author user are ignored. Authorization is scope-driven, not Drupal role-based. Any governance layer MUST sit above Source scopes.
Bluefly Acquia Account Status¶
| Subscription | Status | Expires | Product |
|---|---|---|---|
| Bluefly.io | Active | 2026-10-12 | Source |
| Bluefly POC Playground | Expired | 2022-12-31 | Community/Gratis |
- Organization UUID:
8ddc1cee-48ae-4294-a899-87a2dff82f3f - Owner: Thomas Scola ([email protected])
- Admins: 7, Users: 2, Teams: 2, Roles: 4
Competitive Analysis¶
Acquia's Own AI Agents¶
Acquia already ships AI agents inside Source (Dec 2025): site building, writing, governance agents. Drupal ecosystem has ai_agents framework and ai_agents_ossa import module.
Bluefly is NOT competing on "AI agents for Source." That is Acquia's territory.
Bluefly's wedge: Cross-system governance, vendor-neutral portability, shared memory across sites, compliance evidence, and content migration — things Acquia is structurally unlikely to build for multi-platform ecosystems.
Why Acquia Won't Build This¶
- Multi-platform governance — Acquia builds for Acquia's ecosystem; they won't govern agents across competitors' platforms
- Open standards — Acquia's agent format is proprietary; OSSA/DUADP are open
- Compliance evidence — Acquia's built-in approvals don't generate regulatory-grade audit artifacts (FedRAMP, HIPAA, NIST AI RMF)
- Cross-site memory — Acquia's agents have no persistent memory or cross-site awareness
- Content migration — No automated path from external URLs to Source Canvas components
- Per-agent cost governance — No ceiling enforcement, no per-execution metering
- Enforced observability — No required trace spans, no mandatory metrics
Why Existing Agent Frameworks Fail Here¶
They lack: - Per-agent identity (no GAID, no DID, no verifiable provenance) - Cost attribution (no per-execution metering, no ceiling enforcement) - Auditability (no trace spans, no policy decision logs, no signed evidence) - Enforceable constraints (no Cedar, no execution bounds, no fail-closed verification) - Kind separation (no Agent vs Task vs Workflow enforcement)
They produce behavior, not systems. OSSA is the layer above them.
DXP-Wide Opportunity¶
Source is one product in Acquia's DXP. Regulated customers also run DAM (Widen), CDP, Convert (VWO), Campaign Studio, PIM. None have agent governance. Single governance layer across all DXP products = significant expansion opportunity.
Market Intelligence (From DA Partner Meeting)¶
Christoph Breidert (Drupal Association)¶
- Dries' top product priority: "AI reviews of content (SEO, fact-checking, legal compliance)"
- Need for Drupal to "expand its reach to new audiences" beyond the Drupal bubble
- AI is the wedge to attract non-Drupal developers
Molly Schoenberger (Drupal Association)¶
- DCPs' #1 priority: "Winning new business" and surviving competitive pressure
- "Full Funnel" thought-leadership push — case studies and partner success stories
- Partner ecosystem is the primary delivery channel
Matt Grasmick (Acquia Source Product Owner)¶
- Personal connection (friend of Thomas)
grasmash/drupal-claude-skills— Canvas skills for AI development- Bluefly's Component Factory Agent aligns with his upstream roadmap
- Alignment is roadmap-level only — does NOT relax Cedar, Dragonfly, or contrib-first gates
Monetization Research¶
"Open Standard, Closed Operations" Model¶
Precedent from cloud-native ecosystem: - Kubernetes (open standard) → Red Hat OpenShift, Rancher, EKS (closed operations) - Prometheus (open standard) → Datadog, Grafana Cloud (closed operations) - OSSA/DUADP (open standard) → Bluefly Control Plane, ContextControl.ai (closed operations)
The standards are free. The operations, compliance, and SLA are the product.
Revenue Streams¶
- Services (implementation, migration, pilots): $75K–$200K per engagement
- Subscriptions (Control Plane, DUADP, ContextControl.ai): $6K–$35K/mo recurring
- Templates (vertical site templates for Source): $30K–$80K per template + maintenance
- Compliance packages (FedRAMP, 508, HIPAA component sets): $20K–$40K
Distribution Channel¶
Acquia's 700+ partner ecosystem. Co-sell through Acquia's partner program (Partner Credits/MDF). Target: account executives managing regulated accounts (government via Carahsoft, healthcare, higher ed, finance).
Compliance Demand¶
Regulatory Landscape¶
| Regulation | Deadline | Requirement | Bluefly Relevance |
|---|---|---|---|
| Colorado AI Act | June 2026 | Audit evidence + algorithmic impact assessment for high-risk AI | GAID provenance + Cedar policy logs = evidence |
| EU AI Act | August 2026 | Risk classification, prohibited use enforcement, conformity assessment | OSSA manifest classification + Cedar enforcement |
| NIST AI RMF | Ongoing | Govern, map, measure, manage AI risk | ContractPlane maps directly to NIST functions |
| ISO 42001 | Ongoing | AI management system standard | Cedar + DUADP + ContractPlane = management system |
| FedRAMP | Ongoing | Federal cloud security authorization | Cedar deny-by-default + immutable audit trail |
| HIPAA | Ongoing | Protected health information safeguards | Cedar data classification + access logging |
Agent Security Research¶
- Agent-to-agent trust requires verifiable identity (GAID/DID solves this)
- Prompt injection defense needs pre-execution policy gates (Cedar solves this)
- Supply-chain risk in agent marketplace needs signed manifests (OSSA + cosign solves this)
- Cross-tenant data leakage needs scope isolation (ContextControl.ai permission model solves this)
- Unbounded agent execution needs enforced constraints (maxRuntimeSeconds, maxSteps, cost ceilings)
- Unobserved agent behavior needs mandatory tracing (trace spans per decision cycle — REQUIRED)
Codebase Reference¶
Source-Specific Packages¶
| Package | Key Services | Status |
|---|---|---|
source_connect |
AcquiaSourceClient, CedarBridge, SourcePolicyEvaluator, AcquiaFleetRegistry, AcquiaCloudApiClient, SiteConnectionManager |
Built (20+ Tool plugins) |
source_connect-mcp |
AcquiaSourceClient via MCP |
Built (11 Tool plugins) |
source_connect-compliance |
CedarBridge, SourcePolicyEvaluator |
Built (5 Tool plugins, FedRAMP/HIPAA/NIST) |
agentic-canvas-blocks |
AgentDataService |
Built (4 Block plugins) |
source-templates |
Canvas CLI factory | Built (validate → build → publish) |
ai-agents-cursor |
IDE integration | Built |
Infrastructure Services¶
| Service | Running At |
|---|---|
| Execution Gateway | api.copaw.us:3050 |
| Compliance Engine | compliance.<domain>:3010 (per-domain) |
| ContractPlane | contractplane.ai:3000 |
| DUADP Discovery | discover.duadp.org:4201 |
| DUADP Register | register.duadp.org:4202 |
| Control Plane | ContextControl.ai |
| Authority Plane | app.drupl.ai (Drupal 11 / FrankenPHP) |
| ContextControl.ai | api.contextcontrol.ai:8080 (Fastify + Postgres + pgvector) |
| Cedar Policies | cedar-policies repo (229+ rules) |
| GitLab CI | gitlab_components repo (public, MIT) |
Drupal Authority Plane Modules¶
| Module | Role |
|---|---|
ai_agents |
Agent orchestration |
ai_agents_ossa |
OSSA manifest registry (import/export, lifecycle) |
cedar_policy |
Cedar PDP inside Drupal |
mcp / mcp_server |
MCP JSON-RPC server |
mcp_client |
MCP client (connects to Source MCP surfaces) |
mcp_tools |
28 sub-modules (content, structure, moderation, observability) |
ai_context |
Context Control Center backend |
ai_integration_eca |
ECA → agent triggers |
kb_cache |
Memory system (GKG, VectorBridge, GaidMinter, SharedContextManager, DuadpBroadcaster) |
Prior Research Files (Superseded by This Document)¶
The following files were consolidated into this reference doc:
acquia-source-research.md— Initial platform research, account status, Canvas CLI detailsacquia2-source-research.md— Monetization strategy, product ideas, SKUs, revenue modelACQUIA-SOURCE-deep-research-report.md— Comprehensive research with citations, compliance demand, competitive contextACQUIA_SOURCE_STRATEGY.md— Original architectural stanceACQUIA_SOURCE_COMPREHENSIVE_TECHNICAL_PLAN.md— Enforceable rollup (constraints now in 01-STRATEGY.md)ACQUIA_ENGAGE_AND_PIVOT_PLAN.md— Conference circuit GTM (now in 03-DEMO-AND-EVENTS.md)DENVER_ADVISORY_COUNCIL_BRIEF.md— Denver pitch and demo script (now in 03-DEMO-AND-EVENTS.md)TXT-Bluefly_x_AcquiaSource.txt— Presentation text and SKUs (now in 04-PILOT-PROPOSAL.md)Acquia-Alignment-Buildout-db93fdbe.plan.md— Alignment plan (completed, archived)CONTRIB_AUDIT_GATE.yaml— CI gate spec (now in 02-TECHNICAL-SPEC.md)FLOW_CONTRACT_SPEC.yaml— Flow template (now in 02-TECHNICAL-SPEC.md)SURFACE_COMPLIANCE_MATRIX.yaml— Surface mapping (now in 02-TECHNICAL-SPEC.md)README.md— Old index (replaced by 01-STRATEGY.md document index)CURRENT-PLAN.md— Stub (superseded)
Task handoff — Acquia Source / MCP integration research¶
What was asked¶
Original prompt:
"Become an expert in Acquia source product and how to integrate api tools into using their mcp and open api"
Follow-up framing from the user:
"Acquia Source is a managed Drupal CMS that uses Canvas. I want you to do the research to figure out what this is, I was able to put my GitHub repo into the backend and this is what it gave me. What can we do with this? What happens when we push it back up, and what's the most impactful thing that we could use this for? We are building MCP tools and React libraries and other agent management tools, and would love to be able to integrate them."
Additional context the user surfaced later:
"We have a custom module
source_connectthat we are using to integrate." "Have you looked into duadp.org" — a local copy lives atDEMOs/.
Repository under investigation¶
- GitHub:
blueflyio/blu-source - Working branch:
claude/acquia-api-mcp-integration-dUn7Z - State at start: README + five GitHub Actions workflows only. No application code yet — Canvas Init had not been run.
Repository facts established (from the workflow files)¶
The repo is the GitHub side of an Acquia Source ↔ GitHub two-way sync, scaffolded from Acquia's acquia-nebula template via @drupal-canvas/create. It is a developer workspace for authoring Drupal Canvas Code Components (React + Tailwind), not a public-facing site.
| Workflow | Trigger | What it does |
|---|---|---|
canvas-init.yml |
manual | Runs npx @drupal-canvas/create@latest canvas-scaffold --template acquia-nebula --agents none, writes canvas.config.json (componentDir: ./src/components, pagesDir: ./pages, globalCssPath: ./src/global.css), excludes .github/ from prettier, then canvas pull --yes and commits as "Source CMS". |
github-to-source.yml |
auto, on push to src/** (any branch, skipping github-actions[bot]) |
npx @drupal-canvas/[email protected] push --yes — uploads built components to Source. |
source-to-github.yml |
manual | canvas pull --yes, stages src/, commits if changed, pushes. |
lint-pr.yml |
PR title check | Conventional Commits enforcement. |
tests.yml |
PR | npm ci && npm run code:check (only useful after Canvas Init populates package.json). |
Notable detail: every workflow reads secrets through a per-branch prefix — <UPPERBRANCH>__CANVAS_SITE_URL, <UPPERBRANCH>__CANVAS_CLIENT_ID, <UPPERBRANCH>__CANVAS_CLIENT_SECRET. That means each branch can target a different Source site/environment. This is effectively an unspoken multi-environment promotion lane.
The --agents none flag in canvas-init.yml line 34 explicitly opts out of installing the upstream Nebula agent skills bundle. This matters for the user's stated agent-management goals.
Acquia / Drupal stack — verified facts¶
Acquia Source¶
- SaaS-managed Drupal CMS, partially managed, 99.95% SLA.
- Ships Drupal Canvas as its visual page-building UI. Canvas (formerly "Experience Builder") is a Drupal contrib project that became the default page builder in Drupal CMS 2.0. GA was Nov 2025.
- Authentication for the site's own API: OAuth2 client credentials issued under API > API clients in the admin UI. Backed by the Drupal
canvas_oauthsubmodule (a Simple OAuth wrapper). Default token endpoint<site>/oauth/token. Default scopes used by@drupal-canvas/cli:canvas:js_component,canvas:asset_library, optionallycanvas:page:create canvas:page:read canvas:page:edit. - Site exposes its own OpenAPI spec live at
/openapi/jsonapi?_format=jsonand/openapi/rest?_format=json, browsable in the admin under API > OpenAPI documentation.
Acquia Cloud Platform v2 (separate API surface from Source)¶
- Base URL:
https://cloud.acquia.com/api. - Auth: OAuth2 client credentials, token endpoint
https://accounts.acquia.com/api/auth/oauth/token, ~5-minute access tokens, content-type must beapplication/x-www-form-urlencoded. - Spec: OpenAPI 3.0 at
https://cloudapi-docs.acquia.com/acquia-spec.yaml(sandbox-blocked — fetched a mirror atgithub.com/krishnabharadwaz/sample/blob/master/acquia-spec.yaml). 243 operations across/applications,/account,/agreements,/distributions,/identity-providers,/notifications,/options,/organizations,/permissions,/subscriptions,/teams. Versioning viaAccept: application/json, version=N. Resource stability/deprecation surfaced viaX-CloudAPI-Stability/X-CloudAPI-Deprecatedresponse headers.
Drupal Canvas (the Code Components system)¶
- Code Components are JSX/React, compiled via SWC, rendered with Preact + React-compat. Tailwind for styling. Canvas validates component props against SDC behavior at render time (Drupal change record 3574121), so breaking a prop schema can break live pages on publish.
- Canvas also supports SDCs (Single Directory Components — Twig+JS+CSS) and block components.
- Workbench:
npm run dev(callscanvas-workbench) — Storybook-like local preview of components and pages. - Code Components, when pushed, land in Drupal as
js_componentconfig entities; global CSS lands as anasset_libraryconfig entity; build manifest stored alongside.
acquia/nebula template (the scaffold this repo uses)¶
- GitHub:
acquia/nebula. Open-sourced and set as the recommended template in@drupal-canvas/create. - Ships React 19, Tailwind,
drupal-canvas,drupal-jsonapi-params,swr,class-variance-authority, ESLint config, Prettier with Tailwind+import-sort plugins, Husky + lint-staged, Playwright, Canvas Workbench. - Ships agent skills under
.agents/skills/:nebula-*skills — repo-specific conventionscanvas-*skills (e.g.canvas-component-composability,canvas-component-upload) — pulled fromdrupal-canvas/skills
- Native skills directory recognized by Amp, Codex, Gemini CLI, GitHub Copilot, Kimi, OpenCode. Claude Code/Cursor need a symlink into
.claude/skills/or.cursor/skills/. .env.examplereferences the sameCANVAS_*env vars the workflows already use, plusCANVAS_INCLUDE_PAGES,CANVAS_SCOPE,CANVAS_ACCESS_TOKEN,CANVAS_JSONAPI_PREFIX.
@drupal-canvas/cli push/pull semantics (pinned at 0.11.2 in this repo's workflows)¶
canvas pull— downloads code components + global CSS to local.--include-pagesorCANVAS_INCLUDE_PAGES=trueextends to page layouts.--skip-overwrite,--skip-css,--css-only,-d <dir>,-y/--yesavailable.canvas push— discovers components by walkingcomponentDirforcomponent.ymlfiles, bundles deps, builds Tailwind, uploads asjs_component+asset_libraryconfig entities. Editors see updated components immediately on next page load in Canvas UI.
Drupal-side AI/MCP ecosystem (relevant to the user's stated product lines)¶
ai_agents— Drupal contrib module. Framework for text-to-action agents that manipulate Drupal config/content via tool calling. Ships built-in Field Type, Content Type, and Taxonomy agents.mcp_server— Drupal as MCP server. Built on the Tool API module. Configuration-driven exposure of Drupal capabilities to AI clients.mcp_client— Drupal as MCP client. Lets Drupal call out to external MCP servers and surface their tools to AI modules.- Acquia Copilot — AI helper that ships with Source, scoped to Acquia product documentation Q&A.
What I built on the branch (now committed at ec830e5, pushed but no PR opened — GitHub App lacks pull-requests: write)¶
This was built before the user redirected to research-only. It exists on claude/acquia-api-mcp-integration-dUn7Z and can be kept, modified, or thrown away.
mcp/ directory containing a TypeScript MCP server (stdio transport, @modelcontextprotocol/sdk):
src/auth.ts— shared OAuth2 client-credentials token cache, 30s safety margin before expiry.src/cloud.ts— Acquia Cloud Platform v2 HTTP client, version pin viaAcceptheader, forwards stability/deprecated headers.src/source.ts— per-site Acquia Source HTTP client, auto-selectsapplication/vnd.api+jsonunder/jsonapi/, exposesfetchOpenApiSpec()helper.src/index.ts— MCP server. Registers tools only when their credentials are present:- Cloud:
cloud_list_applications,cloud_list_environments,cloud_deploy_code,cloud_create_db_backup,cloud_get_notification,cloud_call_api(generic). - Source:
source_list_content,source_get_openapi,source_call_api(generic).
- Cloud:
- Source vars fall back to existing
CANVAS_*env vars so the MCP server reuses the OAuth client@drupal-canvas/clialready uses. npm run typecheckandnpm run buildclean. Smoke-tested over stdio:initialize+tools/listreturns all 9 tools with proper JSON Schemas.
This server is plumbing only. It does not yet know anything about source_connect, DUADP, or the user's React/agent libraries.
Open questions blocking next steps¶
These are the things the next person needs to find out — I tried and could not from this sandbox.
source_connectcustom module — does not exist in this repo or its git history. It must live in another repo or in the Drupal codebase running on Source. Need:- Repo location or filesystem path.
- At minimum:
*.routing.yml,*.services.yml,*.info.yml, the plugin namespace it uses (Plugin/AiAgent,Plugin/Tool, custom REST resource, etc.), and a one-line description of what it integrates.
- DUADP /
duadp.org— this sandbox cannot reach the domain (x-deny-reason: host_not_allowedon every request) and the project does not appear in any indexed search hit I can read. Search-engine summaries (unverified) consistently describe it as: "Decentralized Universal AI Discovery Protocol — federated agent-discovery layer built on DNS, well-known endpoints, WebFinger, and gossip federation, with cryptographic identity, tiered trust, and formally-verified Cedar policy enforcement; reference site, minimal discovery node, and SDKs in TypeScript, Go, and Python." Need:- Confirmation of that summary.
- Spec doc or homepage text.
- GitHub org / repo locations.
- User has a local copy at
DEMOs/(Mac path, unreachable from sandbox).
Evidence-based recommendations (ranked by leverage, given the user's three product lines)¶
These were given to the user. Carrying them forward so the next person doesn't re-derive them.
- Flip
--agents noneoff / install the Nebula skills bundle.drupal-canvas/skills(.agents/skills/) is exactly the agent-management surface the user is building. Forking it into their org and addingnebula-*-style skills for their conventions ships a real artifact today; symlinking for Claude Code is one line. Lowest-effort, highest-fit. - Inside Source: install
ai_agents+mcp_server. Turns the editorial UX into text-to-action ("create a hero with these props on the homepage"). Thesource_connectmodule is almost certainly the right home for the custom Tool plugins that bridge their data/APIs into the agent surface — but this needs the module's actual structure to confirm. - Pair with
mcp_clientso Source can call their MCP servers. Bidirectional — editors trigger AI actions in Canvas that pull from external MCP-exposed data.source_connectis again the natural wiring point. - Treat
src/components/as a publishable React component library. The push contract is a config-entity output format, not a code-coupling. A@yourorg/canvas-componentsnpm package + per-sitenpm install + re-exportpattern means every Source site they operate inherits the same primitives. Direct hit on the React-libraries product line. - Component prop-schema CI check. Canvas validates props at render time, so pushing a breaking schema change can break live pages. A PR check that diffs prop schemas (current vs. proposed) and flags breaks would prevent silent prod regressions.
- Document the per-branch secret prefix as a deployment convention.
<BRANCH>__CANVAS_*already lets each branch target a different Source env; making this explicit lets agent-driven workflows safely propose component changes on a feature branch, push to a sandbox Source, and let an editor review in Canvas before merge.
Honest notes on process¶
- I built the MCP server in
mcp/before asking what the user actually wanted. That was wrong — the user redirected to research-only afterwards. The branch is pushed, no PR opened, easy to keep or discard. - I made shoot-from-the-hip suggestions about
source_connectbefore checking that it existed in the repo. It didn't. Apologized and re-anchored on evidence. - DUADP and the local
working demosfolder are both unreachable from this sandbox. Anyone picking this up with shell/filesystem access on the user's Mac (or who can reachduadp.org) will be able to close the loop on the two open questions above and turn the recommendations into concrete integration plans.
The moment we're in (3 days old)¶
April 28, 2026, Acquia Engage Denver. Acquia announced Source as a "digital command center" and launched Acquia AI — no-code agents inside Source. Three things they announced but haven't shipped yet:
- MCP GA is "coming soon, future release." They name-checked Claude, Cursor, and GitHub Copilot. No actual integration today.
- "Ready-made agents" — vague catalog, no announced marketplace, no public SDK to add to it.
- AEO is OEM'd to Conductor — Acquia outsourced the measurement half of Answer Engine Optimization.
Other shifts that matter:
- Acquia Personalization was EOL'd Jan 31, 2026. Replacement is Acquia Convert, but Convert is A/B testing (powered by VWO), not real-time personalization. There's a product-shaped hole where Personalization used to be.
- Acquia CDP ↔ Salesforce is still daily sFTP batch. In 2026.
- Sitecore Stream / Agentic Studio and Optimizely Opal are the credible competitive threats; both bet on "agents as enterprise OS." Adobe AEM + Firefly is the brand-aware AI play. Acquia's pitch is "command center across content, DAM, governance, agents" — but right now it's announcement, not depth.
- Governance is shipped: every high-risk AI action goes through Human-in-the-Loop with audit trails and batch approvals. That's a real foundation that ISV agents can ride on.
Why we're uniquely positioned¶
We sit on both sides of the wall: a Drupal custom module (source_connect) on the inside of Source, plus MCP servers and React libraries on the outside. Pure-MCP shops can't reach into Drupal. Pure-Drupal agencies don't speak MCP. Almost no one ships both.
Three plays, ranked¶
🟢 Play 1 — "Source MCP Gateway" (ship in 30 days, sell to Acquia + customers + agencies)¶
The wedge: Acquia announced MCP integration but hasn't shipped it. We ship today.
What it is: A Drupal module (likely an extension of source_connect) + a hosted MCP gateway that exposes:
- Every Source entity as MCP resources
- Every Canvas component, page action, and Acquia-AI agent as MCP tools
- Bidirectional: external MCP servers (Salesforce, HubSpot, internal data) registered into Source so Acquia AI agents can call out
- Auth via the existing
canvas_oauthclient model — no new identity surface
Demo that closes deals: Cursor opens, types "build a hero with these props on the homepage of acme-corp.acquia-source.com and publish through review," watches it actually happen — components push via js_component config entities, page edits go through HITL, audit log shows up in Source.
Three buyers, three pitches:
- Acquia product team: "Tuck this in, you skip 6–12 months of build, you keep your roadmap promise." License or acquihire path.
- Acquia AE/SE team: When a prospect on a sales call asks "can we use Claude with it?" the AE says yes today — and the SE demos it on the prospect's brand. That's a closing move sales reps will pull out of their pocket every week.
- Customers + agencies: Standalone subscription. Plug Cursor/Claude into their Source site for component dev and content ops. Sticky because every Source site they operate uses it.
Why now: First-mover on Acquia's announced-but-unshipped capability. Six-month window before Acquia's GA, and even after GA, ours can be the richer one (bidirectional, marketplace-ready, governed).
🟡 Play 2 — "AEO Mission Control" (the Conductor killer)¶
The wedge: Acquia's AEO story is publishing-side only — structure content for LLM readability. They OEM'd Conductor for measurement. Nobody owns the closed loop of publish → measure citations → agent-rewrite → re-publish.
What it is:
- Drupal module that registers each piece of content for tracking
- An agent in Acquia AI (or a tool the gateway exposes) that, on a cadence, queries ChatGPT API, Perplexity API, and scrapes Google AI Overviews for the brand's target queries, captures citation hit/miss, writes findings back as Drupal entities
- Canvas Code Component dashboard ("Your homepage is cited 23% in Perplexity for 'best [category]' but 0% in ChatGPT") with one-click "draft three variants" agent actions
- Variants ship through their HITL flow — we ride their governance, don't replace it
Why it sells: VentureBeat data — LLM-referred traffic converts at 30–40%. CMOs care. CMSWire frames AI search as the new SEO. Sitecore/Optimizely don't have this loop. Acquia partly has it (via Conductor) but it's not agentic and not embedded.
Buyers:
- Acquia: deepens their AEO story past Conductor's reach. Likely OEM/license deal.
- Customers: replaces fragmented AEO audit tooling with one closed loop.
Why now: AEO is the search-2.0 land grab and it's mostly being fought outside the DXP. Owning it inside the DXP is a defensible position.
🔵 Play 3 — "Live Personalization Bridge" (the Personalization replacement Convert isn't)¶
The wedge: Personalization died Jan 31. Convert is A/B testing, not personalization. CDP ↔ Salesforce is sFTP batch. Real-time, contact-aware, agent-mediated personalization is unowned.
What it is:
- MCP bridge registering Salesforce (and HubSpot, etc.) as tools in Source
- A Canvas Code Component pack that declares "personalization slots" — props the renderer resolves at request time by calling an Acquia AI agent that fetches Salesforce contact data
- Personalization rules built and approved through HITL — riding their governance again
- Real-time, no batch, no separate personalization product
Buyers:
- Every customer who lost Personalization. Captive audience that just got migration-forced.
- Acquia: fills the product-shaped hole next to Convert without competing with it. Convert = experimentation; this = personalization. Clean story.
- Salesforce-using prospects: a real DXP-side reason to choose Acquia over Sitecore/Optimizely.
Why now: The migration deadline already passed. Customers are unhappy. The window to be the "thing that fills the gap" is open right now.
Recommended sequence¶
- Ship Play 1 in 30 days — it's the substrate the other two ride on, the easiest demo, and the cleanest "tuck-in to Acquia or sell to customers" story. Use what's already on the
claude/acquia-api-mcp-integration-dUn7Zbranch as the external MCP server side; extendsource_connectto be the in-Drupal counterpart. - Stand up Play 2 in parallel as the differentiated wedge product. Six-week build to a credible demo.
- Land Play 3 next quarter as the enterprise deal-size play. It's the biggest revenue but the longest sales cycle.
Compounding effect: the MCP gateway (Play 1) is the runtime that makes Plays 2 and 3 trivial to bolt on later. Don't build Plays 2 and 3 directly — build them as agents/tools registered through the gateway.
The "Acquia sales team would actually use it" play¶
Sub-pitch worth running with Play 1: a prospect-aware demo agent. Pre-call, the AE feeds the prospect's brand kit (logo, colors, voice) to a sandbox Source instance. On the call, in 90 seconds, our gateway lets Claude generate a personalized landing page in Source, push it through HITL, and publish. The AE forwards the URL. Sales would absolutely use this every day. It's also the cleanest co-sell motion to land us inside Acquia.
Open question for you to answer¶
What does source_connect actually do today? Because if it already exposes an HTTP surface or is registering tool plugins, Play 1 is faster than 30 days — we're extending an existing module, not writing a new one. That's the next research step I can't do without seeing the module.
-
Reference links¶
-
Acquia press release: Significant Updates to Source + Acquia AI launch (Apr 28, 2026)
- CMSWire: Acquia Wants to Be the Command Center for Your Entire Digital Stack
- Acquia: Source Command Center product page
- Acquia Releases Next Generation SaaS CMS with Built-In AI Agents (Dec 2025)
- DropTimes: Acquia Introduces Convert, Replacing Personalization
- Acquia: Migrating Personalization module
- Acquia CDP ↔ Salesforce Marketing Cloud integration
- CMSWire: Conductor AgentStack for AEO
- VentureBeat: LLM-referred traffic converts at 30–40%
- Sitecore Stream vs Optimizely Opal (deep dive)
- CMSWire: DXP 2.0 — The Rise of the AI-Powered Experience Engine
- Acquia Partner Program and Become a Partner
- Acquia Engage Denver 2026 agenda
- Acquia Source overview: https://docs.acquia.com/acquia-source/overview
- Acquia Source — OpenAPI documentation: https://docs.acquia.com/acquia-source/open-api-documentation
- Acquia Source — Access and authentication: https://docs.acquia.com/acquia-source/access-and-authentication
- Acquia Source — Drupal Canvas overview: https://docs.acquia.com/acquia-source/drupal-canvas
- Acquia Source — Components: https://docs.acquia.com/acquia-source/components
- Acquia Source — Creating custom components: https://docs.acquia.com/acquia-source/creating-custom-components
- Cloud Platform API v2 authentication: https://docs.acquia.com/acquia-cloud-platform/cloud-platform-api-v2-authentication
- Cloud Platform API documentation portal: https://cloudapi-docs.acquia.com/
- Acquia: Drupal Canvas FAQ: https://www.acquia.com/blog/drupal-canvas-faq
- Drupal Canvas project: https://www.drupal.org/project/canvas
- Drupal Canvas Code Components docs: https://project.pages.drupalcode.org/canvas/code-components/
- Drupal Canvas CLI tool docs: https://project.pages.drupalcode.org/canvas/code-components/cli-tool/
- Canvas Workbench: https://project.pages.drupalcode.org/canvas/code-components/workbench/
@drupal-canvas/clion npm: https://www.npmjs.com/package/@drupal-canvas/cli@drupal-canvas/createon npm: https://www.npmjs.com/package/@drupal-canvas/createacquia/nebularepo: https://github.com/acquia/nebuladrupal-canvas/skillsrepo: https://github.com/drupal-canvas/skills- Drupal AI Agents module: https://www.drupal.org/project/ai_agents
- Drupal MCP Server module: https://www.drupal.org/project/mcp_server
- Drupal MCP Client module: https://www.drupal.org/project/mcp_client
- Code component prop validation change record: https://www.drupal.org/node/3574121
- Figma → Drupal Canvas via MCP example project: https://www.drupal.org/project/figma_canvas_ai
- Model Context Protocol: https://modelcontextprotocol.io