---
title: Compose connectors through CLI, MCP, and Flue
description: Keep one provider contract while each caller owns its own interface and execution concerns.
---

Start with the provider task, then choose the caller that owns the surrounding experience.

| Caller | Owns | Does not own |
| --- | --- | --- |
| CLI | Argument parsing, explicit `--execute`, local redacted run logs | Provider behavior or managed run history |
| MCP and Code Mode | Operator selection, authorization, tool transport, read-only composition where declared | Provider credentials or unapproved writes |
| Flue | Agents, models, workflow state, tools, and execution traces | Loop tenancy, provider primitives, or receipt semantics |

For a read task, each caller constructs the same provider client from already resolved authentication material. For a write task, each caller uses the same plan, validation, execution, reconciliation, and receipt contract. The caller adapts the result to a local log, tool result, or managed history record.

Code Mode currently stays read-only for connector composition. A mutation requires an approval-aware surface. Flue workflows execute only within the authority their host gives them; provider credentials alone do not grant tenant authority.

Detailed source tutorials: [Flue search-term review](https://github.com/patronage/agentic-marketing-connectors/blob/main/packages/google-ads/examples/flue-search-term-review.ts) and [guarded mutation receipt](https://github.com/patronage/agentic-marketing-connectors/blob/main/packages/connector-lifecycle/examples/guarded-mutation-receipt.ts).
