You connect to us. We connect to your customers’ tools — and secure the access.
Explore our integrationsLaunches August 17, 2026
Name the app your agents run under and pick the scopes it may ever ask for — one form, one-time secret, no provider paperwork.
afctl applications register --app-id my-agent
Every agent your org has registered with Fabriq
Mint a token for your own user ID, then call tools through the gateway. The Python SDK is the shipping client.
# 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"},
)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"./oauth/{provider}/initiateConnect a tool/connectionsWhat they connected/tokenMint a scoped token/connections/{id}/disconnectRevokeWe encrypt and manage your customers’ credentials for you — your agent never touches a token.
customer_8842→gmail.send · chat:writecustomer_9117→drive.file · sheets.readonlycustomer_2301→repo:readcustomer_4470→mail.send · chat.readwritecustomer_5518→calendar.eventscustomer_6034→page:readcustomer_7291→documents.readonly · drive.filecustomer_1188→files.readwriteYour customer approves the provider’s consent screen on a page we host. No Fabriq account, no sign-up.
Access and refresh tokens are encrypted at rest in a secrets vault, keyed to your own user ID — your database never stores one.
One endpoint. The token is injected into the call server-side, so your agent never handles or refreshes it.
Every call is logged with the user it acted for, the agent, the tool, and the verdict.
self-serve · launches august 17, 2026
For your company · enterprise
Governing agents across your own employees instead? Same hub, other side.