Import the OpenAPI 3 document
Every operation arrives as a draft. Contro1 ignores the servers list and refuses remote references, so the document cannot point anywhere you did not intend.
Agent security architecture
Use your OpenAPI spec to give AI agents controlled access to a private API. Choose operations, approve sensitive writes, run calls through a private connector.
Updated Oct 26, 2026
Use your OpenAPI spec to give agents controlled access to a private API. Choose their operations, require approval for sensitive writes, and execute calls through a connector inside your network. The API stays private, and you do not build or host an MCP server for it.
Your billing API already knows how to read invoices and create credit notes. It runs on your own servers in AWS, in a private subnet. Your cloud AI agent cannot reach it.
Connecting the agent means more than finding a network path. You also need to expose the right operations, keep credentials out of the agent, decide which calls need approval, and record what happened.
Contro1 brings those steps together. Import your OpenAPI 3 document, review and publish selected operations, and grant them to your agents. The agents call those Actions through Contro1's MCP connection. A connector inside your network picks up authorized jobs and calls your API.
Your API stays private. You do not need to build or host an MCP server for it.
Watch a support agent request a credit note, a finance manager approve it, and the connector run it inside the VPC:
Teams describe the wall in the same words. The API "works on my laptop", because the laptop is on the VPN and sees the private DNS. The cloud agent is not on that VPN, and the service has no public route.
Private does not mean nothing leaves the network. The API's address and its credential never leave the connector machine. The inputs of each call and the API's answer do travel through Contro1, so it can check policy and give the agent the result.
Let an agent finish work in an internal system: on-prem applications
An OpenAPI document describes what an API can do. It is not a security policy. The policy is the choice an administrator makes from it, operation by operation.
Every operation arrives as a draft. Contro1 ignores the servers list and refuses remote references, so the document cannot point anywhere you did not intend.
Confirm what it does, its inputs, its effect and its risk. A POST is at least a medium-risk write, a DELETE is high-risk. Agents will read the title and description you approve.
Publishing freezes the chosen operations and their fingerprints. Anything you leave out never becomes a tool, and new operations in a later version stay drafts until someone reviews them.
Choose which department, person or specific agent may use each operation, and whether it runs on its own or waits for a person.
Should every endpoint become a tool? No. A large API can have hundreds of endpoints. Exposing all of them floods the agent's context and invites the wrong pick. Publish the few that serve a real task.
Every call follows the same path. The agent never talks to your API directly, and nothing in your network listens on a public address.
Different agents need different slices of the same API. A support agent reads invoices and proposes credits. A finance agent issues them. A coding agent reads customer records and nothing else.
| Billing API operation | Support agent | Finance agent | Coding agent |
|---|---|---|---|
| Read invoices | Runs on its own | Runs on its own | Not granted |
| Read customer | Runs on its own | Runs on its own | Runs on its own |
| Create credit note | Waits for Finance | Runs on its own | Not granted |
| Delete customer | Not granted | Not granted | Not granted |
Two layers apply to every agent:
Its list holds what it was granted, so its context stays small and it does not pick an operation it should never use.
Hiding is not the control. If an agent calls an operation it was not granted, Contro1 refuses it before anything reaches your API.
An operation is not a record. A grant for "Read customer" says the agent may call that operation. It does not say which customers. Contro1 enforces the operation, the agent and the approval. Which records the call can reach is decided by your API and by the rights of the credential the connector uses. Give that credential only what the published operations need, and put sensitive writes behind approval so a person sees each one.
The credential is the real permission. If the agent holds it, the agent, its prompt and its logs can all leak it.
Approving call by call just teaches people to click yes. Reads and routine actions should run on their own. A person should see the writes that matter: money, customer records, anything hard to undo.
When a call needs approval, the approver sees it in plain words, in Contro1, Slack or Teams:
Matching timestamps across logs during an incident is slow. The record should answer the questions in one place:
The person whose request started the run.
The agent's own identity, not a shared key.
The exact Action, and whether policy let it run, held it or refused it.
The approver, when, and the reason they saw.
The result the connector reported, or an uncertain state when the answer was lost.
Every call of one run under one trace, next to the agent's other tool calls.
Then you have a different question: how a cloud agent reaches that server. Be clear about what Contro1 does here.
Each answers part of the question. Pick by what you need to control, not only by how packets travel.
| Option | What it gives you | What is still on you |
|---|---|---|
| VPN to the agent host | Reachability with tools you already run. | Hard to run for many agents. Network rules decide which hosts it reaches, not which operations it may call. |
| Public endpoint or reverse proxy | Works with any cloud agent. | The API is now public. Auth, rate limits and abuse are yours, and the security review usually ends here. |
| MCP tunnel | Outbound only, no public endpoint. Some AI platforms now offer one. | Tied to one platform, and you still build and run the MCP server. Scoping, approvals and audit are yours. |
| Self-hosted MCP gateway | One place for auth, routing and logs. | Another service to run and secure, plus the MCP servers behind it. |
| Custom policy proxy | Keys stay in the proxy. You choose hosts, methods and paths. | It becomes your product: policy, approvals, retries, audit, uptime. |
| Contro1 connector | Operations from your OpenAPI, outbound only, grants per agent, approval for writes, one record. No MCP server to build. | Early access. One credential per API on the connector host. |
Developers hit this wall first. A coding agent in a cloud sandbox cannot see the staging API that works on the laptop. The quick fix is to hand it the VPN, an SSH key or an API key. Then nobody decides what it may change, nobody approves the risky step, and nobody can tell later what it did.
With Contro1 a coding agent gets the same controls as a production agent:
Reads can run at once. Changes wait for you or your lead. The agent never holds the API's address or key.
Hooks for Claude Code and Codex send the actions you select, such as deploys, database operations, infrastructure changes or privileged tools, to an approver before they run. Organization-managed settings keep the rule for every developer.
Each tool call is reported to Contro1, one trace per run, next to the Actions it ran.
Connecting registers the coding agent as an agent of its own, with its own grants. Your personal access does not flow to it.
Your internal API becomes one more application in Contro1, next to your SaaS apps and your on-prem ones. Every agent in the organization reaches all of them through the same place: production agents, coding agents and personal assistants.
Three things. Most teams have them on day one.
Reachable over HTTPS inside your network, or over plain HTTP if the connector runs on the same machine. No OpenAPI file? A hand-written list or the vendor's API documentation as a PDF also works.
Linux or Windows, in a private subnet that can reach the API. It needs outbound HTTPS to Contro1, through a NAT gateway or a proxy. No public IP, no inbound rule.
Pick one task, such as reading invoices and creating a credit note. Start with reads, then add writes with approval.
On-prem and self-hosted connectors are in early access, and we set up the first one with you. When you are ready, send this section to whoever runs the network. It is three commands on the VM.
Before they start: in Contro1, open the application, choose Create installation code and download the setup file. Send it to them privately, because it holds a one-use code. On the VM they fill in the API's private address, the IP to dial and the credential. Those values never leave the VM.
Bring these answers to the review.
| Question | Answer |
|---|---|
| Does the API need a public IP or endpoint? | No. The connector makes outbound HTTPS calls only. The API stays in its private subnet. |
| Any inbound rule in the security group? | No. Outbound HTTPS to Contro1 is enough. |
| Does Contro1 store the API's address or key? | No. They are entered and stored on the connector VM. |
| What data passes through Contro1? | The Action's inputs and the API's answer, so Contro1 can check policy and return the result to the agent. Results are size-limited. The address and the credential do not. |
| Which records can an agent reach? | Contro1 enforces which operations each agent may call and which need approval. Record-level limits come from your API and the credential the connector uses. |
| Can someone send the connector an arbitrary request? | No. It runs only published operations, pinned by fingerprint. Jobs carry inputs, never URLs, headers or code. |
| What if a job is forged or replayed? | Jobs are signed and checked before they run, and each job is handed out once. |
| How do we turn it off? | Revoke the agent's grant in Access, or stop the connector. Calls fail at once. |
OWASP Top 10 for Agentic Applications ยท Model Context Protocol: Authorization
If your API or MCP server is already public, with good auth and narrow scopes, connect it like any other app.
If one developer needs a coding agent to reach a staging service for an afternoon, a VPN or an SSH session is fine.
You need this when the API must stay private, agents write to it, more than one agent or person relies on it, or you will need to show later what each agent did and who allowed it.
Reaching a private API is the easy half. The harder half is deciding which agent may do what there, and proving it afterwards.
Tell us which application you want to connect and what your agent should do first. We will review the API and network requirements, identify the first operations, and scope an early-access pilot with you.
Yes. Import the OpenAPI 3 document into Contro1, review each operation, and publish the ones you want. Agents then see them as Actions over Contro1's MCP connection, with titles and input schemas from the document. You do not build or host an MCP server.
Run a small connector inside the private network that opens an outbound HTTPS connection. The agent calls an Action in Contro1, Contro1 checks the grant and any approval, and the connector runs that one operation against the private API. The API never gets a public endpoint.
No. With Contro1 the internal API does not need an MCP server at all: agents use Contro1's MCP connection, and the connector inside your network calls the API over an outbound connection.
Not through the connector. The connector calls HTTP APIs from their OpenAPI operations. If the MCP server wraps an internal API, connect the API instead. If the MCP server is reachable over the internet with proper auth, add it as an application on the internet.
No. Publish the few operations that serve a real task. A long tool list floods the agent's context and makes a wrong pick more likely. Unpublished operations stay drafts.
Grant operations per department, person or specific agent, and choose for each whether it runs on its own or waits for a person. Which records an operation can reach is set by your API and the credential the connector uses.
No. Hiding keeps the agent's context small, but the control is the check on every call. Contro1 refuses any operation the agent was not granted, server side, before it reaches the API.
Outside the agent. With the Contro1 connector, the API's credential is entered on the connector host and never reaches Contro1 or the agent. Use a dedicated credential with only the rights the published operations need.
Writes with real impact: money, customer records, deletions, anything hard to undo. Let reads and routine actions run on their own so approvers are not flooded.
A VPN or tunnel gives reachability. A gateway or proxy gives a place for auth and logs. You still need grants per agent, approval for sensitive writes and a record. Pick the option that gives you those without making the API public.
Give AI agents access to internal APIs and on-prem apps without a VPN or inbound ports, with per-agent permissions, approval for risky writes and audit.
A practical framework for deciding which AI agent actions need human approval - with concrete examples across support, finance, and ops.
Route selected Claude Code actions to a manager or other eligible reviewer before they run, with production deployment as a practical quickstart example.
Zero Trust for AI agents means every agent action is tied to identity, least agency, human approval, traceability, and signed evidence before it reaches business systems.
Assign the right owner to any AI agent with a five-minute owner test, an ownership matrix, a RACI, and a copy-ready Agent Ownership Record.
Your ERP is the system of record for money and your CRM for customers. AI agents now take real business actions with no system of record at all. Here is what one must capture and how to stand it up fast.