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.
connector-* packages ship for high-value enterprise targets phased across P4–P6.
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).
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.
| Capability | SDK / Component | Why it matters |
|---|---|---|
| Multi-provider LLM access | sdk-ai-gateway | Anthropic · OpenAI · Gemini · Bedrock behind one typed interface; PII redaction; Langfuse traces; per-tenant routing rules |
| Agent identity as first-class | contracts + sdk-agent-runtime | agent_id · agent_persona · agent_scope · agent_chain — agents are identities, not bypasses |
| Capability tokens | sdk-agent-runtime | Every tool invocation requires a signed scope-limited single-use token; tool refuses without; meter validates at gate |
| Execution TTL | sdk-agent-runtime | Hard deadline at agent run start; runtime terminates on expiry; runaway agents impossible by construction |
| Deterministic replay | sdk-agent-runtime | Content-addressed execution log; replaying produces bit-identical outputs; enables rollback, bug reproduction, model-upgrade regression testing |
| Sandboxed memory | sdk-agent-runtime + Vector store partitions | Hard physical partitions per tenant in the vector store; cross-tenant prompt-leakage CI test fails closed |
| Knowledge retrieval (RAG) | sdk-knowledge-rag | Per-tenant corpora; policy-filtered hits; embeddings via the gateway |
| Conversation surface | sdk-conversation | Multi-turn chat with handoff, transcripts, memory |
| Semantic reasoning | sdk-semantic (6 types) | SemanticObject · Relation · CapabilityGraph · Ontology · Intent · Policy — agents reason against typed domain concepts |
| Approval routing | sdk-approval | Agents acting beyond scope route to human sign-off; reversible-action journaling |
| Lineage & observability | sdk-lineage + sdk-trace | "An agent recommended X — show me the derivation chain"; full trace across identity + consent + routing + meter + execution |
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.
// 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
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.
Every third-party system fits exactly one of three categories. Knowing which one prevents wasted effort.
Tools where ProjexCloud is the answer. Customer migrates off these.
| Third-party | Our equivalent | Notes |
|---|---|---|
| Salesforce / HubSpot CRM | sdk-crm | We're the CRM (with Persona-keyed contacts + encounter-based deals) |
| Auth0 / Okta (as IdP product) | sdk-identity | We're the IdP; we federate WITH customer's existing Okta as a SAML source |
| Temporal (as a product) | sdk-workflow | We wrap Temporal as our backend; tenants never see it directly |
| Datadog (as a product) | sdk-trace + sdk-telemetry | Cross-system trace viewer + OTel; export to Datadog optional |
| Algolia / Elasticsearch (as a product) | sdk-search | OpenSearch under the hood |
| Stripe Billing (the billing product, not payment processing) | sdk-billing + sdk-meter | Method-level metering + invoicing; we just use Stripe as a payment processor |
| ServiceNow / Zendesk (ticketing) | sdk-service-request | Tickets are engagement-of-kind 'support' |
| Box / SharePoint (as a DMS) | sdk-content + sdk-media | For documents authored ON our platform |
| Mixpanel / Amplitude | sdk-analytics | ClickHouse + Iceberg lakehouse |
| Snowflake (as the platform's analytics warehouse) | Iceberg lakehouse in P7 | For PLATFORM analytics; customer's Snowflake = Category C |
| Pinecone / Weaviate (as a product) | pgvector → dedicated vector DB at hyperscale | Tenants don't see the underlying vector store |
Provider-style backends behind our typed SDK abstractions. Tenants pick the provider; SDK handles the interface. No lock-in.
| Domain | Configured providers (per tenant) | SDK |
|---|---|---|
| LLM inference | Anthropic · OpenAI · Gemini · Bedrock · local models (Llama/Mistral) | sdk-ai-gateway |
| Payment processing | Stripe · Razorpay · Plaid · ACH | sdk-payment |
| Notification channels (outbound) | Twilio (SMS) · SES (email) · WhatsApp BSP · Slack · Teams · Push | sdk-notification |
| KMS | AWS KMS · GCP KMS · HSM · customer's CMK (BYOK) | sdk-vault + sdk-secrets |
| Identity (customer's IdP) | Okta · Azure AD · Ping · Google Workspace · Auth0 | sdk-identity (SAML + SCIM federation) |
| Maps / Geo | Mapbox · Google Maps · OSM | sdk-geo |
| Blob storage | AWS S3 · GCS · Azure Blob | sdk-media |
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 system | What the platform needs to do | Primitive |
|---|---|---|
| Salesforce (existing customer data) | Read accounts/contacts/opportunities; bidirectional sync to sdk-crm | connector-salesforce + MCP |
| Snowflake / BigQuery / Databricks | Bidirectional sync with Iceberg; query federation; agents query customer's data | connector-snowflake + MCP |
| Slack (bidirectional) | Read threads, post messages, slash commands, app shortcuts | connector-slack + MCP |
| Microsoft 365 | SharePoint docs, Outlook email, Teams posts, Graph API | connector-microsoft365 + MCP |
| Google Workspace | Drive, Gmail, Meet, Calendar | connector-gworkspace + MCP |
| Jira · Linear · Asana · Monday | Issue/task sync | connector-jira, connector-linear (+ MCP via public servers) |
| Zendesk · Freshdesk · Intercom | Ticket sync with sdk-service-request when customer keeps their existing tool | connector-zendesk + MCP |
| SAP · NetSuite · Workday | ERP/HR data sync | Custom connectors via framework + MCP |
| Industry verticals (Epic, Cerner, MLS, Bloomberg) | Vertical-specific reads | Built per-vertical using framework |
| Zoom · Google Meet · Teams (video) | Meeting create, recording fetch | Smaller connectors + MCP |
| GitHub · GitLab | Repo/issue/PR access | Public MCP server (Anthropic publishes one) |
sdk-mcp-bridge — The Strategic PrimitiveModel 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.
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
sdk-connectors — The FrameworkFor 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.
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.The phased roster. Each connector follows the same template, phased by enterprise impact.
| Connector | Phase | Effort | What it does |
|---|---|---|---|
connector-salesforce | P5 | L · 5w | Read/write Accounts, Contacts, Leads, Opportunities; bidirectional sync to sdk-crm; SOQL query for agents; webhook + Bulk API support |
connector-snowflake | P6B | L · 5w | Query federation; Iceberg bridge for bidirectional data; agent tool: "query the customer's warehouse" |
connector-slack | P4 | M · 3w | Bidirectional: read channels/threads, post messages, slash commands, app shortcuts, interactive components (sdk-notification has outbound; this adds the inbound + interactive side) |
connector-microsoft365 | P5 | L · 6w | Graph API: SharePoint files, Outlook (mail/calendar), Teams chat + meetings, OneDrive |
connector-gworkspace | P5 | L · 5w | Drive, Gmail, Meet, Calendar, Docs/Sheets/Slides API |
connector-jira | P5 | M · 3w | Issues, sprints, boards; webhook ingestion; sdk-service-request bidirectional sync |
connector-linear | P5 | M · 2w | Issues, projects; GraphQL API; webhook ingestion |
connector-zendesk | P5 | M · 3w | Tickets bidirectional with sdk-service-request; macros, automations |
connector-hubspot | P5 | M · 4w | For customers staying on HubSpot CRM but wanting ProjexCloud orchestration |
connector-zoom | P5 | S · 2w | Meeting create, recording fetch, webhook ingestion |
connector-github | P6A | S · 2w | (Could be MCP-only since Anthropic ships an MCP server; connector adds bulk operations) |
connector-sap · connector-netsuite · connector-workday | P7+ | XL · 8w each | ERP/HR — large, vendor-specific; built when customers ask |
connector-epic · connector-cerner | Vertical-driven | XL | Healthcare-vertical-owned; lives in projex-vertical-healthcare |
connector-mls-* | Vertical-driven | L | Realty-vertical-owned |
connector-bloomberg | Vertical-driven | L | Finance-vertical-owned |
Connectors integrate with agents through the CapabilityGraph in sdk-semantic. Every connector's operations register as tools the agent can plan against.
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
// 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
// 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
| Phase | Adds for integration |
|---|---|
| P4 Operational + Billing | sdk-connectors framework · connector-slack (bidirectional) |
| P5 Engagement | connector-salesforce · connector-microsoft365 · connector-gworkspace · connector-jira · connector-linear · connector-zendesk · connector-hubspot · connector-zoom |
| P6A AI + Agent Isolation | sdk-mcp-bridge (the strategic primitive) · connector-github (small, complements public MCP) |
| P6B Knowledge + Semantic | connector-snowflake (lakehouse bridge + agent query tool) |
| P7+ | Heavy enterprise: connector-sap · connector-netsuite · connector-workday as customers demand |
| Vertical-driven | Industry connectors (connector-epic · connector-cerner · connector-mls-* · connector-bloomberg) ship in vertical repos, not the platform |
sdk-connectors + sdk-mcp-bridge + 8 to 10 connector-* packages in the platform monorepo (P4–P6B).| You're looking for | Document |
|---|---|
| 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 |