Metorial: a control plane for agent credentials, tested against its own README
Connect any AI model to 1200+ integrations (MCP, CLI, API)
At a glance
- What is it?
- Metorial is a TypeScript control plane that sits between AI agents and 1200+ integrations, handling OAuth, token lifecycle, RBAC and audit logs. The design is sound on paper, but the repository you are reading is the catalog, not the engine, and the licence is not resolved in the metadata.
- Who is it for?
- Adopt Metorial if you are running multiple agents against OAuth-protected SaaS systems and you currently store refresh tokens in application code, because metorial.providerDeployments.setupSessions.create plus a providerDeploymentId is a smaller surface than a bespoke token store. Do not adopt it if you need a single self-contained binary with no control plane, or if your agents only touch one internal API you already authenticate.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem Metorial names: agents holding credentials nobody audits
The README opens with a claim rather than a feature list: agents are being connected to production systems without a consistent identity and access layer, which means limited access control, no auditing, and no standard access restrictions. That is a specific failure mode and it is worth stating precisely. When an agent framework calls a SaaS API, the credential normally lives wherever the developer put it, an environment variable, a row in a local database, or a token file. The agent does not have an identity distinct from the application. If two agents in the same codebase act on the same Slack workspace, the audit trail, if one exists at all, cannot separate them. Metorial's answer is to insert a control plane between the agent and the integration, so the agent presents a session and the control plane resolves which credentials, which scopes, and which principal. The audience is narrow and identifiable: platform teams at companies where agents already touch production SaaS, and where a security reviewer has asked who can act as whom. It is not aimed at a solo developer wiring one API key into a script.
What actually sits in this repository versus the rest of the ecosystem
This is the first thing to get right, because the README is explicit and easy to misread. metorial/metorial is described as the integration catalog covering SaaS tools and enterprise systems. The engine, the part that runs the control plane, lives in a separate repository, metorial/metorial-platform, which the README says is open source and self-hostable. Around those sit the CLI, a shared library repository called Lowerdeck, and Starbase, an MCP debugging and testing utility. The SDKs are separate again: metorial-node for JavaScript and TypeScript, metorial-python for Python. So a self-hosting story here is a multi-repository story. The README states that the platform can be run against the MCP servers in this catalog repository. It does not give a docker compose file, a Helm chart, or a migration path in the material provided, and no releases were retrieved for this repository. Anyone planning a self-hosted deployment should treat the platform repository as the actual starting point and check its deployment documentation directly, because this README does not carry it.
How a session becomes tools: the connect and adapter mechanism
The mechanism in the Quick Start is worth reading closely because it explains the whole architecture in about twenty lines. You construct a Metorial client with an API key. You create a provider deployment, which binds a name to a providerId, in the example metorial-search. You then call metorial.connect with an adapter and a list of providers, each referenced by providerDeploymentId. The call returns a session, and session.tools() produces a tool list that goes straight into the agent framework. In the TypeScript example that framework is the Vercel AI SDK, using streamText with anthropic('claude-sonnet-4-20250514') and stopWhen: stepCountIs(10). In the Python example it is Pydantic AI, where the same session.tools() is passed to Agent. The adapter is the seam: metorialAiSdk() and metorial_pydantic_ai() are what translate Metorial's integration surface into each framework's tool format. That means the integration is not bound to a framework, and the same providerDeploymentId can be reused across projects, environments and people, which is the reuse claim the README makes. The trade-off is that the session is a live object created per run, so the control plane is in the request path for tool discovery.
OAuth without a callback server: setup sessions and the magic URL
The part of the README that is most concrete about auth is the OAuth section. Rather than embedding an OAuth client in your application, you create a setup session with metorial.providerDeployments.setupSessions.create, passing a providerId and a providerAuthMethodId. The response includes a url, which the example logs as the place to authenticate. The README names Slack, GitHub, Google Calendar and SAP as services this applies to. The developer-facing framing is a magic URL: unify OAuth, API keys and other auth flows into one URL. The design consequence is that the redirect handling, token exchange and refresh live in the control plane rather than in your service, and the resulting auth config is reused by later sessions. This is the strongest argument for the project. OAuth refresh logic is the kind of code that is written once per integration and then quietly rots. The README does not, in the material provided, document token expiry behaviour, revocation, or what happens when a refresh fails mid-session, and those are the questions to ask before trusting it with a production Slack workspace.
Permissions, audit logs and the security claims that need verification
The security section lists RBAC, SAML SSO, IAM, scoped credentials per agent, workflow, team or environment, and audit logs that record which agent acted with whose credentials. Those are the capabilities a CISO would ask about, and the README states them as built-in. What the README does not provide is a data model. It does not show the shape of a scope, the format of an audit record, or how a permission boundary is enforced at the point where a tool call is dispatched. That gap matters because the entire value proposition rests on enforcement, not on logging. A system that records that agent A used user B's credentials is useful; a system that prevents agent A from using user B's credentials when it should not is the thing being sold. The honest reading is that the README asserts the control plane enforces scopes, and the mechanism is in the platform repository. Treat the security capability list as a checklist to test against a self-hosted instance, not as a description of behaviour you can verify from this repository alone.
Where Metorial is the wrong tool
Two cases stand out. The first is scope. If your agents talk to one internal service behind a single service account, Metorial adds a network hop, a control plane to operate, and a session object to manage in exchange for credential handling you may already have solved. The README's own framing, a shared layer across teams and projects, implies the value appears at the second or third integration, not the first. The second is deployment shape. The README recommends the hosted platform as the fastest and most reliable way to use Metorial, and self-hosting means running the platform repository against the MCP servers in this catalog. If your constraint is that no agent credential may leave your network, the hosted path is closed to you and the self-hosted path is a multi-repository deployment whose operational documentation is not in this material. There is also a subtler limitation: the catalog is the integration surface, so coverage of any specific enterprise system depends on whether that system has a maintained MCP server with a working auth method. The 1200+ figure describes the catalog, and the README does not break it down by maintenance status.
How this differs from wiring MCP servers directly
The obvious alternative is to run MCP servers yourself and let each agent framework connect to them, which is what the Model Context Protocol is designed for and what tools like Claude Code, Codex and Cursor already do. The README acknowledges this path and positions Metorial alongside it, noting that you can use integrations across those tools without breaking security policies. The difference in approach is where state lives. With direct MCP, each server holds or receives its own credentials, and the agent framework holds the connection. With Metorial, the credential is held by the control plane, the agent holds a session, and the providerDeploymentId is the unit of sharing. That is a real architectural difference, not a packaging one: it moves the audit boundary from the framework to the control plane, and it makes revocation a control-plane operation rather than a per-server one. The cost is a dependency. If the control plane is unavailable, tool discovery fails, and every agent that relies on it fails with it. Direct MCP has no such single point of failure, at the price of having no shared revocation point either.
Licence, maintenance and what to check before you commit
The repository metadata reports the licence as NOASSERTION, which means the licence could not be automatically classified from the repository contents. That is not the same as having no licence, and it is not the same as a permissive one. It means you cannot determine your obligations from the metadata, and you should read the LICENSE file in metorial/metorial and in metorial/metorial-platform directly, particularly if you intend to self-host or to embed any of the shared libraries. This is a factual gap, not legal advice. On maintenance, the last push recorded is 2026-09-10 and no releases were retrieved for this repository, which is consistent with a catalog repository that is updated continuously rather than versioned. The practical consequence is that you cannot pin a catalog version the way you would pin a library, so integration changes can arrive without a release boundary. If reproducibility matters to your deployment, ask how the platform repository pins the catalog before you build on it. The concrete first step is to read the platform repository's deployment documentation and confirm whether providerDeployments.setupSessions and providerAuthMethodId behave identically on a self-hosted instance, because the OAuth flow is the feature you would be adopting Metorial for.
Editorial conclusion
Adopt Metorial if you are running multiple agents against OAuth-protected SaaS systems and you currently store refresh tokens in application code, because metorial.providerDeployments.setupSessions.create plus a providerDeploymentId is a smaller surface than a bespoke token store. Do not adopt it if you need a single self-contained binary with no control plane, or if your agents only touch one internal API you already authenticate. Verify three things before committing: the exact licence text for metorial/metorial and metorial-platform, whether the self-hosted platform exposes providerDeployments.setupSessions at parity with the hosted API, and which of the 1200 integrations are catalog entries versus maintained MCP servers with working auth methods.
Community notes