Skip to main content
Field notes / integration

Two front doors, one governed surface

Plexara exposes the same governed surface through an MCP server and a REST API. SDKs connect to both, custom tools extend it, and every path shares one identity, one audit log, and one persona model.

8-minute readIntegration

One surface, two doors

Plexara exposes one governed surface: assets, collections, knowledge, memory, prompts, personas, audit, and tool execution. There are two ways to reach it. An MCP server speaks to AI agents in the protocol they already understand, and a REST API speaks to ordinary services over HTTP.

They are not two different products with a sync problem between them. They are two entrances to the same room. Every call through either door resolves the same identity, writes to the same audit log, and is filtered by the same personas. There is no surface that only one of them can reach and no governance that only one of them enforces.

That symmetry is the point. A team can start with an agent over MCP, add a backend integration over REST later, and never reconcile two security models, because there is only one.

Two doors, one room

MCP server

for agents

REST API

for services

One governed surface

AssetsCollectionsKnowledgeMemoryPromptsPersonasAuditTools

one identity · one audit log · one persona model

The MCP server and the REST API are two entrances to the same governed surface. Both resolve the same identity, write to the same audit log, and obey the same personas.

Which door to use

Choose REST when a service needs a stable, versioned contract: a backend job, a scheduled integration, anything with no agent in the loop. The REST API ships an OpenAPI specification, so a typed client can be generated for whatever language the service is written in using standard tooling.

Choose MCP when an AI agent needs the same operations through a protocol it already speaks. The server exposes tools, resources, and prompts that the client negotiates at connect time, and it works with any MCP-compatible client SDK, in TypeScript, Python, or the other open-source libraries.

The decision is about ergonomics, not capability. Neither door is a subset of the other. They expose the same operations because they are backed by the same surface.

Which door to use

Service-to-service

Reach for REST

  • A backend service calling a stable, versioned contract
  • Clients generated from an OpenAPI specification
  • Scheduled jobs and integrations with no agent in the loop
  • You want HTTP semantics and a typed SDK

Agent-facing

Reach for MCP

  • An AI agent needs the same operations through a protocol it knows
  • Tools, resources, and prompts negotiated at connect time
  • Any MCP-compatible client SDK, in TypeScript or Python
  • You want the model to discover and call capabilities

Three ways to authenticate, one persona resolution

OIDC with required JWT claims is the primary path: your identity provider asserts who the caller is, and Plexara trusts that assertion. OAuth 2.1 with PKCE is supported for new client types, bringing the code-interception protection that PKCE was designed for. API key management is available for service accounts that cannot run an interactive flow.

What every method has in common is what happens after authentication. Your identity provider establishes who the caller is. Plexara resolves that identity to a persona, and the persona decides what the caller can see and do. Authentication and authorization are kept distinct on purpose, the same way enterprise systems are met where they are without weakening isolation.

Three ways in, one resolution

OIDC with JWT claims

The primary path. Your identity provider asserts who the caller is.

OAuth 2.1 with PKCE

For new client types, with the code-interception protection PKCE provides.

API keys

For service accounts that cannot run an interactive auth flow.

Whichever method authenticates the caller, Plexara resolves it to a persona. The IdP provides identity; Plexara provides what that identity is allowed to see and do.

Extending the surface

A custom tool can be registered through the Portal or the management API. Once registered, it appears in the agent tool list like any other Plexara tool, with persona-scoped visibility and the same audit and authorization treatment. It is part of the governed surface, not a bypass around it.

This matters because adding capability is the easy part and governing it is the hard part. A custom tool that escaped the persona model or the audit log would reopen exactly the gap the platform exists to close. Keeping extensions inside the same rules is what lets the surface grow without the governance fraying.

It is also why more tools do not automatically mean a more capable agent. Capability scales with context and governance, not with connector count, so a custom tool earns its place by being scoped and described well, not merely by existing.

Extending without forking

01

Register

A custom tool is added through the Portal or the management API.

02

Scope

It is given persona-scoped visibility, like every other tool.

03

Govern

It carries the same audit and authorization treatment.

A custom tool is not a side channel. It enters the same tool list the agent already sees, under the same rules.

Pick the protocol, keep the governance

For a developer, the choice between REST and MCP is a choice of convenience. A backend service wants a typed HTTP client. An agent wants a protocol it can negotiate. Plexara serves both from one place.

What does not change with the door is everything that matters for trust. The identity is resolved the same way, the persona filters the same way, and the audit log records the same way. The surface is governed once, and reached however suits the work.