MCP gateway

One gateway. Every tool.

You connect to us. We connect to your customers’ tools — and secure the access.

Explore our integrations

Launches August 17, 2026

YOUR AGENT
How it works

Two steps to ship. We handle the rest.

01Step one

Register your agents.

Name the app your agents run under and pick the scopes it may ever ask for — one form, one-time secret, no provider paperwork.

1
Name it
An app id and a display name.
2
Pick scopes
Per tool, from the catalogue.
3
Activate
One-time secret, then it is live.
afctl applications register --app-id my-agent
console

Agents

Every agent your org has registered with Fabriq

02Setup · step two

Integrate with AF.

Mint a token for your own user ID, then call tools through the gateway. The Python SDK is the shipping client.

Python SDKagent.py
# pip install agentic-fabriq-sdk
from af_sdk import MCPClient

token = await af_client.get_mcp_token(
    external_user_id="customer_8842",
)

async with MCPClient(
    method="token",
    app_id=AF_APP_ID,
    app_secret=AF_APP_SECRET,
    af_token=token["access_token"],
    gateway_url=AF_GATEWAY_URL,
) as client:
    await client.call_tool(
        "gmail_send_email",
        {"to": "bob@example.com", "subject": "Hi"},
    )
Drag into your coding agent
Claude Code · Cursor · Codex
coming soon
Integrate Agentic Fabriq (B2B2C) into this codebase.

Install: pip install agentic-fabriq-sdk
Env: AF_API_URL, AF_APP_ID, AF_APP_SECRET, AF_GATEWAY_URL

Build three paths, in this order:

1. Connect a tool for one of our users
   POST {AF_API_URL}/api/v1/apps/{AF_APP_ID}/external-users/{our_user_id}/oauth/{provider}/initiate
   headers: X-App-Id, X-App-Secret
   body: {"connection_id": "<our_user_id>-<provider>", "scopes": [...]}
   redirect the user to the returned oauth_url.

2. Mint a per-user MCP token (server-side only)
   POST {AF_API_URL}/api/v1/apps/{AF_APP_ID}/external-users/{our_user_id}/token
   -> {"access_token": "...", "expires_in": 3600}

3. Call tools as that user
   from af_sdk import MCPClient
   MCPClient(method="token", app_id=..., app_secret=..., af_token=...,
             gateway_url=AF_GATEWAY_URL)
   then client.list_tools() and client.call_tool(name, arguments).

Rules:
- Never store provider access or refresh tokens in our database. Fabriq vaults them.
- The only user identifier we send is our own user ID.
- Keep AF_APP_SECRET server-side; never ship it to a client.
- Treat a 401 from the gateway as "mint a new token", not "re-run OAuth".
POST/oauth/{provider}/initiateConnect a tool
GET/connectionsWhat they connected
POST/tokenMint a scoped token
POST/connections/{id}/disconnectRevoke
/api/v1/apps/{app_id}/external-users/{user}
03Everything else

We handle the rest.

We encrypt and manage your customers’ credentials for you — your agent never touches a token.

your user idvaulted grant
customer_8842gmail.send · chat:write
customer_9117drive.file · sheets.readonly
customer_2301repo:read
customer_4470mail.send · chat.readwrite
customer_5518calendar.events
customer_6034page:read
customer_7291documents.readonly · drive.file
customer_1188files.readwrite
tokens injected server-side · never in your process

They authorise

Your customer approves the provider’s consent screen on a page we host. No Fabriq account, no sign-up.

We hold the credentials

Access and refresh tokens are encrypted at rest in a secrets vault, keyed to your own user ID — your database never stores one.

You call tools

One endpoint. The token is injected into the call server-side, so your agent never handles or refreshes it.

You get the record

Every call is logged with the user it acted for, the agent, the tool, and the verdict.

OAuth clientsOur provider apps and verification, not yours.
Consent screensWe broker the provider consent flow and its callback.
Token vaultAccess and refresh tokens encrypted at rest.
Refresh + retryExpiring tokens refresh before the call goes out.
Per-user scopingEvery call capped by what that customer granted.
Audit trailUser, agent, tool and verdict on each call.
Tool schemasOne schema per tool, served from the gateway.
RevocationDisconnect a customer and the stored grant is gone.

self-serve · launches august 17, 2026

Start building with Fabriq.

View integrations

For your company · enterprise

Governing agents across your own employees instead? Same hub, other side.