ProjexCloud · Agentic Substrate & External Integration · v3.1

Agentic Applications + Third-Party Integration — How They Compose

This document answers two questions: (1) What in v3.1 makes the platform agentic-ready out of the box? and (2) What third-party integrations does the platform need — and which ones it deliberately doesn't? The answer is structured around three categories (replace · integrate · connect) plus two new primitives: sdk-mcp-bridge for the emerging Model Context Protocol standard and sdk-connectors as the framework for typed external-system connectors.

Companion docs · ./Architecture-v3.1.html · ./SDK-Build-Plan-v3.1.html · ./AIM-Identity-Model-v3.1.html · ./ProjectStructure-v3.1.html
Status · v3.1 commitment
What this doc commits to. (1) v3.1's agentic substrate is complete and competitive — agent identity types, isolation runtime (capability tokens + TTL + replay + sandboxed memory), semantic reasoning, lineage, and observability already exist; the platform is more rigorous than what Salesforce/ServiceNow/Snowflake currently expose for agents. (2) Third-party integration splits into three categories: we replace the competitive platforms with our own SDKs; we integrate with provider-style backends (LLMs, payment processors, IdPs, KMS, channels) via pluggable abstractions; we connect to customer's existing enterprise tools (Salesforce, Snowflake, Slack, M365, …) via two new primitives. (3) The strategic addition is sdk-mcp-bridge — implementing the Model Context Protocol both ways (consume external MCP servers; expose our SDKs as MCP servers) makes ProjexCloud agents interoperable with any MCP-compatible system, present or future. (4) Per-target connector-* packages ship for high-value enterprise targets phased across P4–P6.

1 · Overview

The previous v3.1 docs ship the platform substrate. This document answers the harder question: can agents do real work on this substrate, and can they reach the customer's existing systems? The answer to both is yes — with one strategic addition (MCP bridge) and one framework + roster (connectors).

Where we win
Agentic substrate is built in, not bolted on
Agents have first-class identity, runtime isolation, semantic reasoning, lineage, observability. Reviewer-grade compliance from day one.
Where we win
Pluggable backends, not lock-in
LLMs · payment · IdPs · KMS · notification channels · storage — every infra dependency is configured per-tenant behind a typed SDK. Customer picks providers.
Where we add
MCP bridge + connector framework
Agents reach OUT to customer's Salesforce / Snowflake / Slack / M365 via MCP servers and typed connector packages. Agents reach IN from external systems via MCP-exposed SDKs.

2 · The Agentic Substrate (what already exists)

ProjexCloud v3.1 is AI-native by design. Every primitive an agentic application needs is in the SDK estate — and is gated, audited, and metered like the rest of the platform.

2.1 · The eleven agentic primitives

CapabilitySDK / ComponentWhy it matters
Multi-provider LLM accesssdk-ai-gatewayAnthropic · OpenAI · Gemini · Bedrock behind one typed interface; PII redaction; Langfuse traces; per-tenant routing rules
Agent identity as first-classcontracts + sdk-agent-runtimeagent_id · agent_persona · agent_scope · agent_chain — agents are identities, not bypasses
Capability tokenssdk-agent-runtimeEvery tool invocation requires a signed scope-limited single-use token; tool refuses without; meter validates at gate
Execution TTLsdk-agent-runtimeHard deadline at agent run start; runtime terminates on expiry; runaway agents impossible by construction
Deterministic replaysdk-agent-runtimeContent-addressed execution log; replaying produces bit-identical outputs; enables rollback, bug reproduction, model-upgrade regression testing
Sandboxed memorysdk-agent-runtime + Vector store partitionsHard physical partitions per tenant in the vector store; cross-tenant prompt-leakage CI test fails closed
Knowledge retrieval (RAG)sdk-knowledge-ragPer-tenant corpora; policy-filtered hits; embeddings via the gateway
Conversation surfacesdk-conversationMulti-turn chat with handoff, transcripts, memory
Semantic reasoningsdk-semantic (6 types)SemanticObject · Relation · CapabilityGraph · Ontology · Intent · Policy — agents reason against typed domain concepts
Approval routingsdk-approvalAgents acting beyond scope route to human sign-off; reversible-action journaling
Lineage & observabilitysdk-lineage + sdk-trace"An agent recommended X — show me the derivation chain"; full trace across identity + consent + routing + meter + execution

2.2 · The twelve platform agents already designed

Architecture §18 defines 12 horizontal agents that ship as part of the platform — they exemplify the agentic patterns and become the first consumers of every primitive above.

2.3 · How a tenant developer's agentic app composes

// A custom app's agent loop (using only platform SDKs)

import { resolveIdentityContext } from '@projexlight/sdk-identity-resolver/client';
import { AgentRuntime } from '@projexlight/sdk-agent-runtime/client';
import { Intent } from '@projexlight/sdk-semantic/client';
import { conversation } from '@projexlight/sdk-conversation/client';

const ctx = await resolveIdentityContext(token);
const agent = AgentRuntime.create({
  agent_id: 'patient-care-coordinator',
  acting_for: ctx.primary_persona_id,
  scope: ['crm.read', 'engagement.encounter.create', 'notification.send'],
  ttl_seconds: 300,
});

// Express the goal as a SemanticIntent — not a prompt
const intent: Intent = {
  goal: 'schedule_follow_up_visit',
  subject: { type: 'Patient', id: 'pers_ravi_hA_patient' },
  parameters: { within_days: 14, prefer_morning: true },
};

// Agent walks the CapabilityGraph to produce a plan
const plan = await agent.plan(intent);   // returns a typed multi-step plan
const result = await agent.execute(plan); // each step gates through @meter + capability tokens

// Everything audited, traced, billed, and replay-able
console.log(result.trace_id);            // open in sdk-trace UI
Runnable samples → The Agent Cookbook shows seven agent types with the exact SDKs, scopes, and code — a Sales Cadence agent (sdk-sequence + sdk-notification + sdk-deliverability), a Booking agent (sdk-scheduling), a Voice Outreach agent (connector-twilio-voice + sdk-consent + sdk-crm), a Lead Intelligence agent (sdk-lead-scoring), a Sales→Delivery Handoff agent (sdk-handoff + sdk-workflow + sdk-approval), an Incident Triage agent (sdk-incident + sdk-audit), and an Offer/Quote agent (sdk-offer-catalog + sdk-approval). These domain SDKs register in the CapabilityGraph as tools exactly like the connectors below — same capability tokens, meter, audit, and trace. See also the Developer Hub for the end-to-end build path.

3 · The Three Integration Categories

Every third-party system fits exactly one of three categories. Knowing which one prevents wasted effort.

3.1 · Category A — We REPLACE (we have our own primitive)

Tools where ProjexCloud is the answer. Customer migrates off these.

Third-partyOur equivalentNotes
Salesforce / HubSpot CRMsdk-crmWe're the CRM (with Persona-keyed contacts + encounter-based deals)
Auth0 / Okta (as IdP product)sdk-identityWe're the IdP; we federate WITH customer's existing Okta as a SAML source
Temporal (as a product)sdk-workflowWe wrap Temporal as our backend; tenants never see it directly
Datadog (as a product)sdk-trace + sdk-telemetryCross-system trace viewer + OTel; export to Datadog optional
Algolia / Elasticsearch (as a product)sdk-searchOpenSearch under the hood
Stripe Billing (the billing product, not payment processing)sdk-billing + sdk-meterMethod-level metering + invoicing; we just use Stripe as a payment processor
ServiceNow / Zendesk (ticketing)sdk-service-requestTickets are engagement-of-kind 'support'
Box / SharePoint (as a DMS)sdk-content + sdk-mediaFor documents authored ON our platform
Mixpanel / Amplitudesdk-analyticsClickHouse + Iceberg lakehouse
Snowflake (as the platform's analytics warehouse)Iceberg lakehouse in P7For PLATFORM analytics; customer's Snowflake = Category C
Pinecone / Weaviate (as a product)pgvector → dedicated vector DB at hyperscaleTenants don't see the underlying vector store

3.2 · Category B — We INTEGRATE (third-party is a pluggable backend)

Provider-style backends behind our typed SDK abstractions. Tenants pick the provider; SDK handles the interface. No lock-in.

DomainConfigured providers (per tenant)SDK
LLM inferenceAnthropic · OpenAI · Gemini · Bedrock · local models (Llama/Mistral)sdk-ai-gateway
Payment processingStripe · Razorpay · Plaid · ACHsdk-payment
Notification channels (outbound)Twilio (SMS) · SES (email) · WhatsApp BSP · Slack · Teams · Pushsdk-notification
KMSAWS KMS · GCP KMS · HSM · customer's CMK (BYOK)sdk-vault + sdk-secrets
Identity (customer's IdP)Okta · Azure AD · Ping · Google Workspace · Auth0sdk-identity (SAML + SCIM federation)
Maps / GeoMapbox · Google Maps · OSMsdk-geo
Blob storageAWS S3 · GCS · Azure Blobsdk-media
This category is a feature, not a gap. Tenants get provider choice; we get pluggability for sovereign cloud and on-prem deployments.

3.3 · Category C — We CONNECT (reach into customer's existing tools)

The real gap. Enterprises already use Salesforce, Snowflake, Slack, M365, Jira — ProjexCloud agents need to read/write these to do useful work. Two new primitives close the gap: sdk-mcp-bridge (§4) and sdk-connectors framework + per-target packages (§5–6).

Target systemWhat the platform needs to doPrimitive
Salesforce (existing customer data)Read accounts/contacts/opportunities; bidirectional sync to sdk-crmconnector-salesforce + MCP
Snowflake / BigQuery / DatabricksBidirectional sync with Iceberg; query federation; agents query customer's dataconnector-snowflake + MCP
Slack (bidirectional)Read threads, post messages, slash commands, app shortcutsconnector-slack + MCP
Microsoft 365SharePoint docs, Outlook email, Teams posts, Graph APIconnector-microsoft365 + MCP
Google WorkspaceDrive, Gmail, Meet, Calendarconnector-gworkspace + MCP
Jira · Linear · Asana · MondayIssue/task syncconnector-jira, connector-linear (+ MCP via public servers)
Zendesk · Freshdesk · IntercomTicket sync with sdk-service-request when customer keeps their existing toolconnector-zendesk + MCP
SAP · NetSuite · WorkdayERP/HR data syncCustom connectors via framework + MCP
Industry verticals (Epic, Cerner, MLS, Bloomberg)Vertical-specific readsBuilt per-vertical using framework
Zoom · Google Meet · Teams (video)Meeting create, recording fetchSmaller connectors + MCP
GitHub · GitLabRepo/issue/PR accessPublic MCP server (Anthropic publishes one)

4 · sdk-mcp-bridge — The Strategic Primitive

Model Context Protocol (MCP) is an open standard for letting LLMs invoke tools across systems. Public MCP servers already exist for Slack, GitHub, Snowflake, Postgres, file systems, and dozens more — and the list grows monthly. By implementing MCP both ways, ProjexCloud agents become interoperable with any MCP-compatible system, present or future.

Why MCP is the highest-leverage single addition. Other integration approaches require us to maintain a connector per target (high cost, slow growth). MCP delegates connector maintenance to the standard's ecosystem — we ship one bridge and inherit access to every MCP server anyone publishes.
@projexlight/sdk-mcp-bridge packages/sdk-mcp-bridge NEW v3.1
Effort: M · 4 weeks · Phase: P6A · Owner: AI Platform
Depends on
contracts · sdk-agent-runtime · sdk-policy · sdk-meter · sdk-audit · sdk-trace · sdk-vault (for credentials)
Owns (consume side)
Register external MCP servers per tenant (with vaulted credentials). Each MCP server's tools auto-register in the agent's CapabilityGraph (sdk-semantic). When an agent's plan references an MCP tool, the bridge mints a capability token, invokes the MCP server, receives the response, and records it in audit + lineage + trace exactly like a native SDK call. Same gated/metered/audited contract as internal tools — no special-case bypass.
Owns (expose side)
Expose selected ProjexCloud SDKs as MCP servers so external AI systems (Claude Desktop, OpenAI custom GPTs, customer's own LLM stacks) can call into ProjexCloud as a tool source. Scoped per tenant via API keys (sdk-api-keys); gated through sdk-meter; full audit trail.
Tenant configuration
Tenant admin registers MCP servers in Tenant Admin Portal → AI → MCP Registry. Per-server: name, transport (stdio · SSE · HTTP), credentials (vaulted), allowed agents, allowed tools (default = all advertised, opt-out per tool).
Done when
An agent plan that includes "post to Slack" + "query Snowflake" + "create Jira issue" executes end-to-end through three different MCP servers, with one trace_id, full audit trail, and meter billing per tool invocation. ProjexCloud's sdk-crm exposed as MCP, callable from Claude Desktop with a tenant token.

4.1 · How MCP fits the existing gate model

sequenceDiagram
  participant A as Agent
(sdk-agent-runtime) participant CG as CapabilityGraph
(sdk-semantic) participant MCP as sdk-mcp-bridge participant META as sdk-meter participant EXT as External MCP server
(Slack / Snowflake / GitHub) participant AUD as sdk-audit participant TRC as sdk-trace A->>CG: plan(intent) CG-->>A: plan: [internal-tool-1, MCP-tool-2, internal-tool-3] loop For each step A->>META: gate.check(sku, token) META-->>A: ALLOW (capability token minted) alt Internal tool A->>A: invoke directly else MCP tool A->>MCP: invoke(mcp-server, tool, args, token) MCP->>MCP: fetch credentials from sdk-vault MCP->>EXT: MCP request (stdio/SSE/HTTP) EXT-->>MCP: tool response MCP-->>A: typed result end A->>AUD: record step (with mcp_server_id if MCP) A->>TRC: trace span end
External MCP tools follow the exact same gate flow as internal SDK tools — capability tokens, meter, audit, trace.

4.2 · What customers can do once this ships

5 · sdk-connectors — The Framework

For high-value targets where MCP isn't yet sufficient (deep schema-aware sync, large-volume bulk APIs, vendor-specific authz models, bidirectional state reconciliation), we ship typed connector packages. They all share one framework.

@projexlight/sdk-connectors packages/sdk-connectors NEW v3.1
Effort: L · 5 weeks · Phase: P4 · Owner: Integrations
Depends on
contracts · sdk-workflow · sdk-vault (credentials) · sdk-audit · sdk-meter · sdk-webhook · sdk-tenant
Owns
The common framework every per-target connector follows:
  • OAuth/credential management — vaulted per-tenant, refresh tokens, scope tracking
  • Schema mapping primitives — typed source→canonical mapping with conflict resolution per the §6A doctrine
  • Bidirectional sync engine — change-data-capture from source + delta push back; replay-safe; conflict-resolution per event-type policy
  • Rate-limit handling — backoff, jitter, per-tenant quota respect
  • Webhook ingestion — receive callbacks from external systems via sdk-webhook (inbound side)
  • Polling fallback — for systems without webhooks
  • Cursor/checkpoint state — durable in connector's schema; survives restarts
  • Health monitoring — per-connection status, error budgets, alerting
Pattern
Each connector-{target} package depends on sdk-connectors and implements: (1) credential schema, (2) source schema → canonical mapping, (3) sync handlers (read + write + delta), (4) tool manifests (for agent invocation via CapabilityGraph). Pool placement: per-target schema (connector_salesforce, connector_snowflake, …) in Admin Pool.
Done when
First connector (Salesforce, P5) ships: customer connects their Salesforce org via OAuth, sees accounts mapped to Persona kind 'salesforce_account', bidirectional sync round-trips an update without conflict, agent CapabilityGraph includes "salesforce.account.update" tool, meter records per-record sync cost.

6 · Per-Target Connector Roster

The phased roster. Each connector follows the same template, phased by enterprise impact.

ConnectorPhaseEffortWhat it does
connector-salesforceP5L · 5wRead/write Accounts, Contacts, Leads, Opportunities; bidirectional sync to sdk-crm; SOQL query for agents; webhook + Bulk API support
connector-snowflakeP6BL · 5wQuery federation; Iceberg bridge for bidirectional data; agent tool: "query the customer's warehouse"
connector-slackP4M · 3wBidirectional: read channels/threads, post messages, slash commands, app shortcuts, interactive components (sdk-notification has outbound; this adds the inbound + interactive side)
connector-microsoft365P5L · 6wGraph API: SharePoint files, Outlook (mail/calendar), Teams chat + meetings, OneDrive
connector-gworkspaceP5L · 5wDrive, Gmail, Meet, Calendar, Docs/Sheets/Slides API
connector-jiraP5M · 3wIssues, sprints, boards; webhook ingestion; sdk-service-request bidirectional sync
connector-linearP5M · 2wIssues, projects; GraphQL API; webhook ingestion
connector-zendeskP5M · 3wTickets bidirectional with sdk-service-request; macros, automations
connector-hubspotP5M · 4wFor customers staying on HubSpot CRM but wanting ProjexCloud orchestration
connector-zoomP5S · 2wMeeting create, recording fetch, webhook ingestion
connector-githubP6AS · 2w(Could be MCP-only since Anthropic ships an MCP server; connector adds bulk operations)
connector-sap · connector-netsuite · connector-workdayP7+XL · 8w eachERP/HR — large, vendor-specific; built when customers ask
connector-epic · connector-cernerVertical-drivenXLHealthcare-vertical-owned; lives in projex-vertical-healthcare
connector-mls-*Vertical-drivenLRealty-vertical-owned
connector-bloombergVertical-drivenLFinance-vertical-owned
The build / buy / MCP triangulation. Before building a new connector, the team checks: (1) Is there a public MCP server? Use it via sdk-mcp-bridge — zero connector code. (2) Is the target a high-frequency enterprise system (Salesforce, M365, Snowflake)? Build the typed connector — worth the effort for bulk operations and schema-aware sync. (3) Is the target long-tail? Customer integrates via Zapier/Mulesoft/n8n through our webhook + API-key surface — no connector code from us.

7 · How Agents Use Connectors

Connectors integrate with agents through the CapabilityGraph in sdk-semantic. Every connector's operations register as tools the agent can plan against.

7.1 · The end-to-end flow

flowchart TB
  classDef intent fill:#241f10,stroke:#f5c451,color:#fff;
  classDef sem fill:#16241c,stroke:#2dd4bf,color:#fff;
  classDef agt fill:#1d1830,stroke:#b88dff,color:#fff;
  classDef tool fill:#0f1422,stroke:#6aa9ff,color:#fff;
  classDef ext fill:#162420,stroke:#5dd39e,color:#e6ecf5;

  USER["Tenant employee enters intent in
Tenant Workspace conversation"]:::intent INTENT["SemanticIntent
'Schedule a follow-up with this
patient · log it in Salesforce ·
notify the care team in Slack'"]:::sem CG["CapabilityGraph
(sdk-semantic)
Lists ALL tools available:
internal SDKs + MCP tools + connectors"]:::sem PLAN["Agent planner produces plan:
1. engagement.encounter.create
2. connector-salesforce.activity.log
3. connector-slack.post-message"]:::agt STEP1["Step 1: internal sdk-engagement"]:::tool STEP2["Step 2: connector-salesforce"]:::tool STEP3["Step 3: connector-slack"]:::tool SF["Customer's Salesforce instance"]:::ext SL["Customer's Slack workspace"]:::ext USER --> INTENT INTENT --> CG CG --> PLAN PLAN --> STEP1 PLAN --> STEP2 PLAN --> STEP3 STEP2 -.->|OAuth · vaulted| SF STEP3 -.->|OAuth · vaulted| SL
Connectors register their tools in the CapabilityGraph just like internal SDKs. The agent doesn't distinguish — both go through capability tokens + meter + audit + trace.

7.2 · Why this is safe

8 · Tenant Developer Experience

8.1 · Building an agentic custom app that uses external systems

// In tenant's custom app — wire up an agent that crosses systems

import { resolveIdentityContext } from '@projexlight/sdk-identity-resolver/client';
import { AgentRuntime } from '@projexlight/sdk-agent-runtime/client';
import { conversation } from '@projexlight/sdk-conversation/client';

const ctx = await resolveIdentityContext(token);

// Tenant admin has already:
//   - Connected Salesforce in Tenant Admin → Connectors
//   - Connected Slack in Tenant Admin → Connectors
//   - Optionally registered a custom MCP server for their proprietary tool
// Those tools auto-appear in this agent's CapabilityGraph

const agent = AgentRuntime.create({
  agent_id: 'cross-system-orchestrator',
  acting_for: ctx.primary_persona_id,
  scope: [
    'engagement.encounter.create',
    'connector.salesforce.activity.log',
    'connector.slack.post-message',
    'mcp.custom-proprietary-tool.read',
  ],
  ttl_seconds: 120,
});

const intent = {
  goal: 'follow_up_workflow',
  subject: { type: 'Customer', id: ctx.subject_id },
  parameters: { meeting_type: 'discovery', urgency: 'high' },
};

const plan = await agent.plan(intent);
// plan = [
//   { tool: 'engagement.encounter.create', args: {...} },
//   { tool: 'connector.salesforce.activity.log', args: {...} },
//   { tool: 'connector.slack.post-message', args: { channel: '#sales-followups', ... } },
//   { tool: 'mcp.custom-proprietary-tool.read', args: {...} },
// ]

const result = await agent.execute(plan);
// Each step audited; bill shows the per-tool cost split (internal vs. connector vs. MCP)
// Open result.trace_id in sdk-trace UI to see the full timeline

8.2 · Registering a custom MCP server

// Tenant admin in Tenant Admin Portal → AI → MCP Registry

POST /v1/mcp-bridge/servers
  {
    name: 'internal-pricing-tool',
    transport: 'http',
    endpoint: 'https://pricing-tool.internal.tenantco.com/mcp',
    credentials_ref: 'secret://tenant/12345/mcp-pricing-token',
    allowed_agents: ['cross-system-orchestrator', 'pricing-agent'],
    allowed_tools: ['price.lookup', 'price.calculate'],  // null = all advertised
  }

// Tools immediately appear in the CapabilityGraph for those agents
// Every invocation is gated, metered, audited, traced — same as any other tool

9 · Phase Mapping (where these land)

PhaseAdds for integration
P4 Operational + Billingsdk-connectors framework · connector-slack (bidirectional)
P5 Engagementconnector-salesforce · connector-microsoft365 · connector-gworkspace · connector-jira · connector-linear · connector-zendesk · connector-hubspot · connector-zoom
P6A AI + Agent Isolationsdk-mcp-bridge (the strategic primitive) · connector-github (small, complements public MCP)
P6B Knowledge + Semanticconnector-snowflake (lakehouse bridge + agent query tool)
P7+Heavy enterprise: connector-sap · connector-netsuite · connector-workday as customers demand
Vertical-drivenIndustry connectors (connector-epic · connector-cerner · connector-mls-* · connector-bloomberg) ship in vertical repos, not the platform

9.1 · SDK count impact

Bottom line. The platform's agentic substrate is already complete; what this document adds is reach. With sdk-mcp-bridge (interop standard) + sdk-connectors framework + a phased connector roster, ProjexCloud agents can do real work that spans the customer's existing enterprise stack — without compromising the gated/metered/audited contract that protects the platform from prompt injection, leakage, and runaway behavior.

Appendix · Cross-references

You're looking forDocument
Architecture (all sections)./Architecture-v3.1.html
Agent Isolation Runtime detail (capability tokens, TTL, replay, sandbox)./Architecture-v3.1.html §18A
Phase plan + dependency graph + exit gates./SDK-Build-Plan-v3.1.html §0A
sdk-agent-runtime, sdk-semantic, sdk-ai-gateway, sdk-conversation, sdk-knowledge-rag detail./SDK-Build-Plan-v3.1.html Wave 6
Pool placement for connectors./Architecture-v3.1.html §8A (to be updated)
Project structure (where connector packages live)./ProjectStructure-v3.1.html
This document./AgenticIntegration-v3.1.html