Skip to main content
One tool covers external systems over MCP: driftless_broker. It operates a Connection that already exists, and never connects or disconnects one (setup is a human-led flow in the dashboard or CLI, not on the MCP surface). If an agent needs an operation the tool does not list, it must report the missing capability, never author a script.
The Broker is gated: off by default in production (DRIFTLESS_BROKER_ENABLED), with a separate external lane (DRIFTLESS_BROKER_ROLLOUT) and per-principal grants. A listed action is not a usable one: a faceless OAuth/MCP caller with no grant gets an empty result even against a healthy connection.

The broker tool

driftless_broker is action-based: pass action to pick the operation. Credentials resolve server-side and every call is audited. Setup (connect / disconnect) and authoring Nango scripts are separate, human-only lanes not reachable here.

Actions

Gates and permissions

Three independent, fail-closed gates apply to an external caller, in order: the master switch (DRIFTLESS_BROKER_ENABLED), the external lane (DRIFTLESS_BROKER_ROLLOUT), and a per-principal grant. An operation must also be policy-allowed; in production the policy registry ships empty, so no write is invokable. The broker:* scopes are enforced only when the Broker is enabled, and they gate the lane on top of rollout and grants. An internal caller (an owned API key or dashboard session) skips the grant gate but still needs the rest.

Reads and materialization

The reads differ in whether they hit the provider live and what they create. records reads the mirror/cache; document-content reads live through the provider-general documents route; index materializes Driftless-owned connector documents; import maps mirror records into Collection Records. Normal context retrieve never queries a provider — and when a retrieve query matches indexed connector documents you didn’t request, the response suggests sources:['connectors'] in next_action instead of including them.

Availability