Everything to go from an OpenAPI spec to a live, governed MCP server — and to call it from an agent.
The fastest way to see a governed MCP server working is to connect Claude to one that's already live — no signup, no API key. This uses Cat Facts, one of 5 public example servers running on the platform, and takes under 5 minutes.
Claude issues a tools/call and gets real content back over the same JSON-RPC connection:
Claude reads that JSON and answers you in plain English with the fact — that's the whole loop: connect, discover tools, call, respond.
Prefer to see the raw request/response before opening Claude? Try the live sandbox — it fires the same tools/list/tools/call requests straight from your browser, no signup required.
Ready to publish your own governed MCP server from an OpenAPI spec instead of a demo one? Sign up to create a tenant, then pick up at Import a contract below.
An isolated customer workspace. All servers, contracts, tools, and audit belong to exactly one tenant, enforced at the database layer.
An OpenAPI spec or REST base URL you register. Each operation is mapped to a tool.
A published, versioned bundle of tools, resources, and prompts that an agent installs by URL.
The runtime component that decides allow, allow_with_confirmation, allow_with_approval, or denied for every call.
In the console go to Build → Contracts → Import. Provide a spec URL or paste JSON/YAML, choose an environment, and we validate it. The validation report flags missing schemas and risky defaults before publish.
For each tool set its risk class and required scopes. The mapping to decisions:
Under Secure → Credentials, connect an OAuth provider or store a secret. The runtime brokers short-lived downstream tokens per call — the agent never sees the raw key.
Returns the full tenant-scoped dataset the console renders — tenants, servers, tools, contracts, audit, and reference docs. Tenant-scoped via RLS.
Lists a server's tools (name, description, method, path, risk, scopes). Discovery only — no side effects, not billed.
Invokes a tool. Body: { toolName, args, ctx? }. Returns the policy decision, the downstream response, and the audit row written.
Each call runs a fixed pipeline: resolve tenant (RLS scope) → validate scope → rate limit → policy decision → broker credentials → invoke downstream → append audit. A denial short-circuits before any downstream call is made.
The application connects to Postgres as a non-privileged role subject to Row-Level Security. Every tenant-owned table carries a tenant_id and a policy:
Because RLS is enforced by the database, a query that forgets its WHERE clause still cannot read or write another tenant's rows. Migrations run as a separate BYPASSRLS owner role.
The platform runs on Cloud SQL for PostgreSQL (multitenant store), Cloud Run (control + data plane), a global HTTPS load balancer with Cloud Armor, and Cloud KMS for the vault. See the full runbook in doc/gcp-deployment-runbook.md.