PPactDocs
Developers

Federation

How Pact federates external systems under governance — the MCP federation gateway (install third-party MCP servers with consent, PII redaction, cost caps, and audit) and cloud video-meeting federation with recording-consent enforcement.

Federation is how Pact reaches out to systems you own or subscribe to and pulls their capability in under a single governance boundary — consent, PII policy, rate limits, cost, and an audit trail. Two federation surfaces are live today: the MCP federation gateway (agent tools) and cloud video-meeting federation (Zoom, Google Meet, Microsoft Teams).

MCP federation gateway

The gateway lets a workspace install external MCP servers and call their tools through Pact rather than directly, so every call inherits Pact's governance. It's administered under /v1/admin/mcp and backed by core.mcp_federation.

Install and manage servers:

Method & pathWhat it does
GET /v1/admin/mcp/catalogMarketplace catalogue of installable servers
POST /v1/admin/mcp/serversInstall a catalogue server or a custom endpoint
GET /v1/admin/mcp/serversList installed servers
POST /v1/admin/mcp/servers/{ref}/discoverDiscover the server's tool list
POST /v1/admin/mcp/servers/{ref}/healthHealth-probe the endpoint
PATCH /v1/admin/mcp/tools/{tool_ref}Per-tool governance (see below)
POST /v1/admin/mcp/servers/{ref}/rotate-secretRe-seal the auth token
GET /v1/admin/mcp/costFederated-spend rollup
GET /v1/admin/mcp/callsRecent call audit across the mesh

Auth material (bearer tokens, header secrets, OAuth) is sealed in tenant_integration_credentials and never round-trips through a response. Routes are owner/admin-only and derive tenant_id from the auth context.

What the gateway enforces on every call

A call routed through the gateway is not a raw proxy. It applies, in order:

  • Consent — if the call carries a data subject (a contact or account), the gateway honors that subject's consent state before any data leaves Pact, using the same legitimate-interests gate as outbound email.
  • PII redaction at the boundary — arguments are scrubbed per the tool's pii_policy (allow / redact / block) before they leave the platform.
  • Per-tool governancePATCH /v1/admin/mcp/tools/{tool_ref} sets enabled, allowed_roles, rate_limit_per_min, cost_cap_cents, and pii_policy per tool.
  • Circuit breaker + retry — a failing upstream trips a breaker (/servers/{ref}/circuit, reset at /servers/{ref}/circuit/reset) instead of cascading.
  • Audit mesh — exactly one mcp_federation_calls row per call, capturing cost, latency, and redaction count.

Try it against a real server

A public, unauthenticated demo MCP server ships at /mcp/demo-federated/. Install it from the federation wizard to exercise the full gateway — discovery, governed calls, cost, and audit — without standing up your own server first. It exposes two deterministic, in-process tools (a synthetic stock quote and a press-release search), so there's no outbound network and no surprise spend.

Installing from the third-party marketplace (POST /v1/marketplace/third-party/bundles/{slug}/install) creates exactly one mcp_servers row per (tenant_id, slug), naturally capped by a unique constraint. Only the catalogue slug and the federation-side public_id (UUID) appear in responses — never an internal integer id.

Video-meeting federation

Pact federates cloud recordings from Zoom, Google Meet, and Microsoft Teams: connect a provider by host OAuth, and recording-ready / transcript-ready webhooks flow into Pact's meeting-intelligence pipeline (summary, action items, decisions, CRM linking).

  • Connect / manage/v1/integrations/{zoom,google-meet,microsoft-teams}/* OAuth wizard endpoints (start, callback, status, disconnect).
  • Ingest/v1/integrations/{provider}/webhook receivers, signature-verified against the tenant-stored webhook_secret; a valid recording-ready event runs through process_recording_ready.
  • Read/v1/meetings/{meeting_public_id}/intelligence exposes summary, action items, decisions, speakers, and a searchable timestamped transcript.
  • ConfigurePUT /v1/integrations/video-meetings/config.

The pipeline honors per-attendee recording-consent verdicts (POST /v1/meetings/{meeting_public_id}/recording/consent). Enforcement is a tenant setting (consent_enforcement on tenant_meeting_intel_config, migration 0426) with three modes:

  • off — never block (the default; legacy behavior).
  • skip_if_declined — block AI/CRM processing if any attendee's latest verdict is a decline.
  • require_all — process only when every attendee has an affirmative granted verdict.

When a meeting is blocked, the pipeline short-circuits: no transcript fetch, no summary, no CRM link, no notification — the recording is marked skipped_consent. When processing is allowed and Slack summaries are enabled, a public_id-safe post-meeting summary is posted to the configured channel via the shared alert transport.

What federation means here

Video-meeting federation is built on Pact's cloud-recording subsystem (host-OAuth recordings + provider webhooks), not a live join-bot. It federates the artifacts providers already produce; it does not dial into calls as a participant.