Developing with the Brutor AI Gateway.
One OpenAI-compatible endpoint. Any LLM provider, MCP tools, A2A agents, skills and your own portal — all governed, all observable, no SDK lock-in.
# OpenAI-compatible chat completions — point your client at /v1/proxy/llm $ curl -X POST https://gateway.brutor.ai/v1/proxy/llm/chat/completions -H "Authorization: Bearer sk_brutor_..." -H "Content-Type: application/json" -d '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello"}]}' # Same gateway, MCP tools — no client changes $ curl -X POST https://gateway.brutor.ai/v1/proxy/mcp/{server_id} -H "Authorization: Bearer sk_brutor_..." -d '{"jsonrpc":"2.0","method":"tools/call","params":{...}}'
Drop in the gateway URL. Your code stays the same.
We didn’t invent a new protocol. The Brutor AI Gateway speaks OpenAI’s API for LLMs, MCP’s JSON-RPC 2.0 for tools, and A2A for agents. OAuth flows are brokered at the gateway, OpenTelemetry traces flow out on every call. There’s no Brutor SDK to install, no proprietary client to maintain, no lock-in to migrate away from.
That’s why pointing any OpenAI SDK, any MCP-aware client, or any A2A-spec agent at the gateway is usually a one-line config change.
Six ways to build on the gateway.
From a one-line LLM swap to a full A2A agent network. Pick the entry point that matches your stack today — the same governance, observability and audit apply to all of them.
Unified LLM API
One OpenAI-compatible endpoint fronts OpenAI, Anthropic, Bedrock, Gemini, Azure, Mistral and self-hosted models. Switch providers without touching client code.
client = OpenAI( base_url="https://gateway.brutor.ai/v1/proxy/llm", api_key="sk_brutor_...", ) client.chat.completions.create( model="claude-sonnet-4-6", messages=[...] )
MCP proxy endpoint
Connect your agents to any MCP server through one URL. The gateway brokers OAuth, enforces per-tenant tool allow-lists, records arguments, and audits every call.
# proxy any MCP server in the registry POST /v1/proxy/mcp/{server_id} Authorization: Bearer sk_brutor_... # JSON-RPC 2.0 — tools/list, tools/call, ...
Call an agent skill
Skills are versioned, composable workflows — model + MCP tools + scripts + templates. Publish once, run from any AI client. Skills are exposed via MCP tools/call through the same MCP proxy endpoint.
POST /v1/proxy/mcp/system-agent-skill-server { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "skill__triage-ticket", "arguments": { "ticket_id": "7421" } } }
Build your own portal
Use the same Portal API the Brutor User Portal does. Sign-in, accessible models, MCP servers, knowledge bases, agent skills. Bring your own UI, keep all governance.
POST /v1/portal/auth/login GET /v1/portal/models/ GET /v1/portal/servers/ GET /v1/portal/knowledgebases/ GET /v1/proxy/skills/catalog
Develop your own agent (A2A)
Publish your agent as A2A. The gateway serves the agent card at the spec well-known URL, brokers message turns and tasks, and applies the same guardrails — to MCP-native and non-MCP agents alike.
GET /.well-known/agent-card/{tenant_id}/{card_name}.json POST /a2a/{tenant_id}/{card_name}/message:send POST /a2a/{tenant_id}/{card_name}/message:stream
Knowledge base & search
Upload to a per-team knowledge base, retrieve with hybrid search, ground answers in your own documents. Embeddings stay inside your infrastructure.
POST /v1/admin/knowledge-base/collections/{id}/documents POST /v1/admin/knowledge-base/collections/{id}/search { "query": "Q3 EMEA renewal terms", "top_k": 8 }
Already using Claude Code, Goose, LangChain or Open WebUI?
Point them at the gateway. Every governance, audit and quota feature applies — no SDK changes, no client patches.
Open WebUI
Run Open WebUI with the gateway as its OpenAI-compatible model source. Users log in to Open WebUI; the gateway sees the API key behind it.
docker run -d -p 3000:8080 -e OPENAI_API_BASE_URL="https://gateway.brutor.ai/v1/proxy/llm" -e OPENAI_API_KEY="sk_brutor_..." ghcr.io/open-webui/open-webui:main
Goose
Configure Goose’s built-in OpenAI provider with your gateway URL and API key. MCP servers configured at the Brutor side flow in automatically.
# ~/.config/goose/config.yaml provider: openai host: "https://gateway.brutor.ai/v1/proxy/llm" api_key: "sk_brutor_..." model: "gpt-4o"
LangChain & LangGraph
Use the standard ChatOpenAI client with a base URL override. Every LLM call, tool call and chain step lands in your audit log.
llm = ChatOpenAI( base_url="https://gateway.brutor.ai/v1/proxy/llm", api_key="sk_brutor_...", model="claude-sonnet-4-6", )
Claude Code
Point Claude Code at the gateway. Per-developer keys, request & tool-call audit, with the rest of your client toolchain unchanged.
# ~/.claude/settings or env export ANTHROPIC_BASE_URL="https://gateway.brutor.ai" export ANTHROPIC_AUTH_TOKEN="sk_brutor_..."
Developing your own MCP servers?
Test, debug and inspect any MCP server.
Walk through OAuth flows, list and call tools, view raw JSON-RPC requests and responses side by side — all without writing a client.
Open the WorkbenchHands-on Udemy course.
Build MCP servers from scratch — protocol fundamentals, OAuth, tool design, and connecting your servers to the Brutor AI Gateway.
Take the courseBuild on the Brutor AI Gateway — free, today.
Includes the gateway, a sandboxed playground, and all 20+ developer guides — quickstart, architecture, MCP development, A2A, OAuth, drop-in client recipes, and the MCP Workbench.