Provisioning API · Internal testing only
Connect with MCP
The builders.ac MCP server lets compatible AI clients manage workspaces, domains, personas, inboxes, and operations through the complete Provisioning API toolset. It is hosted and managed by builders.ac, so there is no package to install and no local server to keep running.
Server URL
Section titled “Server URL”https://mcp.builders.ac/mcpThe /mcp path is the Streamable HTTP transport endpoint. Use the complete URL shown above.
Connect your agent
Section titled “Connect your agent”OAuth is the recommended connection method. On the first connection, your client opens a browser so you can sign in to builders.ac and approve access. You do not need to create or paste an API Key or API Secret for OAuth. Retrieving encrypted inbox or domain credentials requires an API-key connection; see Encrypted responses.
Chat clients
Section titled “Chat clients”- In ChatGPT, open Settings → Security and login and enable Developer mode.
- Open Plugins, select the plus button, and create a connection named
builders.ac. - Under Connection, enter the server URL shown above.
- Create the connection, complete the browser authorization, and review the discovered tools.
- Start a new chat and add
builders.acfrom the tools menu.
Developer mode and custom connections can be limited by your ChatGPT plan or workspace policy. See Connect and test an MCP server in ChatGPT.
- Open Customize → Connectors in Claude.
- Select the plus button, then Add custom connector.
- Name it
builders.acand paste the server URL shown above. - Select Connect, then finish signing in and approving access in your browser.
On Team or Enterprise, an owner must first add the connector under Organization settings → Connectors. These steps use Claude’s native remote connector; no local proxy is required.
Coding agents and IDEs
Section titled “Coding agents and IDEs”Add the remote HTTP server:
claude mcp add --transport http builders-ac https://mcp.builders.ac/mcpStart Claude Code, run /mcp, select builders-ac, and complete the browser
authorization. Use claude mcp list later to check the connection.
Add the remote server, then start its OAuth flow:
codex mcp add builders-ac --url https://mcp.builders.ac/mcpcodex mcp login builders-acRun codex mcp list to confirm that builders-ac is configured. The CLI and IDE
extension share the same MCP configuration.
Add this to .cursor/mcp.json for one project, or ~/.cursor/mcp.json to make it
available across projects:
{ "mcpServers": { "builders-ac": { "url": "https://mcp.builders.ac/mcp" } }}Open Cursor’s MCP settings, connect builders-ac, and complete the browser
authorization. These instructions target the Cursor desktop app.
Other clients
Section titled “Other clients”Configure a remote Streamable HTTP MCP server with the URL shown above and choose
OAuth when your client asks for an authentication method. In addition to OAuth discovery
and dynamic client registration, the client must use an HTTP loopback callback on
localhost, 127.0.0.1, or [::1]. Other hosted callback domains are not accepted.
If your client asks for the transport separately, choose Streamable HTTP, not SSE or
stdio.
Try it
Section titled “Try it”After connecting, ask your client:
- “Which builders.ac account am I connected as?”
- “List my workspaces.”
- “Show the personas in my workspace.”
- “List my provisioning operations and their status.”
For the complete setup lifecycle, follow Set Up Your Sending Infrastructure with AI. It covers owned domains, nameservers, mailbox creation, sequencer connections, and the manual warmup checkpoint, with the same internal-testing limitations.
Available tools
Section titled “Available tools”The server exposes 47 tools: all 44 Provisioning operations and three helpers. The
default tools/list response includes the entire current catalog. Provisioning names
and input schemas come from the OpenAPI contract, using its operation IDs as tool names.
See the Provisioning guide for resource behavior.
| Area | Tools |
|---|---|
| Helpers | me, sending_ac_info, provisioning_api_key_setup |
| Account | getAuthenticatedAccount, listEncryptionKeys |
| Meta | getApiIndex, getProvisioningOpenApi, getProvisioningProblem, listProvisioningProblems |
| Workspaces | listWorkspaces, createWorkspace, getWorkspace, updateWorkspace, deleteWorkspace, archiveWorkspace, unarchiveWorkspace |
| Personas | listPersonas, createPersona, getPersona, updatePersona, deletePersona |
| Domains | listDomains, getDomain, updateDomain, deleteDomain, connectDomains, reconnectDomain, buyDomains, renewDomain, setDomainRedirect, cloneDomain, setDomainSequencer, removeDomainSequencer |
| Inboxes | listInboxes, createInboxes, getInbox, updateInbox, deprovisionInboxes, uploadInboxes |
| Provider accounts | listProviderAccounts, createProviderAccount, getProviderAccount, updateProviderAccount, deleteProviderAccount |
| Operations | listOperations, getOperation, cancelOperation |
The three helpers take no arguments. me returns the connected user’s ID, name, and
email; sending_ac_info describes builders.ac; provisioning_api_key_setup directs you
to create a builders.ac API credential and reconnect
using it.
MCP tools are invoked through tools/call. Let your client discover their schemas and
call them. The server exposes tools only, with no MCP resources or prompts.
Inputs, results, and retries
Section titled “Inputs, results, and retries”Provisioning tools use the API’s path and query parameter names, such as wsp, dom,
inb, and limit. JSON request fields go inside body. A required Idempotency-Key
header becomes a required idempotency_key argument. For example, createWorkspace
accepts:
{ "idempotency_key": "a553bfc5-0651-4b21-a847-6d12507b7c9f", "body": { "name": "Outreach" }}Your agent can generate the idempotency key. Use a new key for a new intended operation and reuse the same key and arguments when retrying that operation. Changing the key on retry can create duplicate work. If an execution’s outcome is uncertain, check the resource or operation status before repeating a mutation.
createInboxes accepts up to 150 entries, but the resulting capacity-occupying total on
the Domain must be exactly 50, 75, or 150. On a fresh Domain, request one of those totals;
on an existing Domain, use the allowed_additions returned with
domain_inbox_count_invalid to choose a tier-valid top-up. Paid-slot availability is a
separate check.
Provisioning results contain status, relevant response headers, and the API body.
Validation, tenant access, feature flags, rate limits, pagination, and idempotency follow
the API. HTTP errors appear as tool errors. Asynchronous actions return operation data
and a Location header when the API supplies one; use getOperation to check progress.
Domain purchase (buyDomains) and renewal (renewDomain) currently return 501.
Destructive operations
Section titled “Destructive operations”deleteWorkspace, deletePersona, deleteDomain, deprovisionInboxes,
removeDomainSequencer, and deleteProviderAccount execute when called. They carry
destructiveHint: true, so your AI client may show its own approval dialog. The MCP
server does not add a confirmation page, typed confirmation, or proof challenge. An API
Secret is not needed for destructive MCP calls.
Direct HTTP calls to the Provisioning API still require its sealed-proof flow for these operations. That requirement applies to the public API, not the authenticated MCP tools.
Encrypted responses
Section titled “Encrypted responses”getInbox and getDomain require API-key authentication because their responses can
contain credentials encrypted for that API Key. MCP returns the same encrypted fields
as the API. Decrypt the ciphertext locally with the corresponding API Secret if you
need to read it. There is no browser secret-view page, and the AI client receives no
decrypted credential values from these responses.
OAuth calls to either tool return api_key_required before the operation runs, with a
link to create a builders.ac API credential.
Reconnect through a client that supports API-key bearer authentication to use those
tools. You can also call provisioning_api_key_setup for these instructions.
Verify with MCP Inspector
Section titled “Verify with MCP Inspector”MCP Inspector is useful when you want to test the server independently of an AI client.
-
Start the Inspector:
Terminal window npx @modelcontextprotocol/inspector@latest -
Open the local URL printed in your terminal.
-
Select Streamable HTTP, enter the builders.ac server URL, and select Connect.
-
If authentication is requested, open Auth settings, run the quick OAuth flow, then connect again.
-
Select List Tools. You should see all 47 tools, including
listWorkspaces,deleteWorkspace, andprovisioning_api_key_setup.
Authentication details
Section titled “Authentication details”Interactive MCP clients should use OAuth. The client discovers the builders.ac
authorization server, registers itself, and uses authorization code with PKCE. Access
is limited to the mcp:use scope, and a compatible client manages access and refresh
tokens for you. OAuth resolves your Provisioning account automatically on first use;
there is no key-generation or key-download step during consent.
Clients that support bearer authentication may instead send an existing Provisioning API Key. Configure this in the client’s authentication settings:
Authorization: Bearer age1…Send only the API Key. Never send the API Secret to the MCP server or store it in an MCP client configuration.
Troubleshooting
Section titled “Troubleshooting”| What you see | What it means | What to do |
|---|---|---|
405 Method Not Allowed in a browser |
Browsers send GET; the MCP transport uses POST |
Connect through an MCP client or MCP Inspector |
404 Not Found at the hostname root |
The transport endpoint is at /mcp |
Use the complete server URL shown above, including /mcp |
| The browser authorization does not open | The client did not start OAuth | Choose OAuth, reconnect, or verify with MCP Inspector |
api_key_required |
getInbox or getDomain was called through OAuth |
Request an API Key with provisioning_api_key_setup and reconnect using it |
| The tools are missing or stale | The client cached older server metadata | Refresh or rescan the connection, then start a new chat |
| The client supports only SSE or local MCP | It cannot use this Streamable HTTP endpoint | Use a client with native Streamable HTTP and OAuth support |
| Authorization repeatedly fails | The client’s saved session may be stale | Disconnect, clear the builders-ac authorization, and connect again |
Opening the server URL in a browser is not a health check. A 405 response there is
expected; listing tools through MCP Inspector is the definitive connection test.