Products

Ships to

CLIs for coding agents

A CLI coding agents can drive, from the same tools as your MCP server.

Claude Code, Codex and Cursor work in the terminal. Give them a CLI for your product with JSON output, clear help and sign-in, generated by Flow from the tools you already wrote.

One Flow project: a CLI for coding agents and an MCP server for ChatGPT and Claude.

claude code
> which orders failed to ship today?

$ shop orders list --status failed --json
[{"id":"4821","reason":"address"},…]

3 orders failed, all on address checks.
Want me to email the customers?

What you can build

Your product,
in every coding agent.

Dev tools

Coding agents that use your product

Developer products (APIs, infrastructure, analytics) get used where developers work. A CLI lets Claude Code or Codex query, deploy and fix with your product without leaving the terminal.

CRM

Data for scripts

Pipe deals into anything.

Ops

Safe writes

A dry run before it changes anything.

Sign-in

Per-user access

Each developer signs in once.

Brand examples are illustrations of what could be built, not those companies' products.

The usual way vs. Flow

A good agent CLI is a product of its own.
Flow generates it.

Building it yourself~2–3 weeks

  1. Commands, flags, argument parsing 2–3 days
  2. JSON output, exit codes, help text 1–2 days
  3. Login and token storage 3–5 days
  4. Packaging and releases 1–2 days
  5. Keep it in sync with your MCP server ongoing

Then every new feature lands twice: once in the CLI and once in the MCP server.

With Flow Frameworkan afternoon

  1. Create the project1 min
  2. Write your tools1–2 hrs
  3. CLI and MCP from the same toolsbuilt in
tools/list-orders.ts
import { tool } from "@flow-engineer/flow";
import { z } from "zod";

export default tool({
  name: "list_orders",
  description: "List orders by status.",
  input: z.object({ status: z.enum(["open","failed","shipped"]) }),
  run: async ({ status }, { user }) => api.orders.list(user, status),
});

How Flow works

Write it once. Ship it to CLI and everywhere else.

  • Tools become commandsEach tool is a command with flags from its typed input, JSON output and help text from its description.
  • The same tools as your MCP serverShip a feature once; it lands in the CLI, in ChatGPT and in Claude together.
  • Tested and tracedScenario tests with simulated users, and every call traced.

Get started

How to ship a CLI for coding agents with Flow.

  1. Create a Flow project

    Run npx @flow-engineer/flow new my-agent, or ask Claude Code or Codex to set it up. You get one folder: the agent’s instructions, its tools, its skills and its tests.

  2. Write what it can do as tools

    Each job is a TypeScript function with a typed input that calls your API: check an order, book a slot, find a deal. No protocol code.

  3. Test it on simulated users

    Run npx @flow-engineer/flow test. Simulated users try the scenarios that matter, including people who change their mind or ask for something your agent should refuse.

  4. Ship the CLI

    Flow builds a CLI from the same tools: each tool a command, inputs as flags, JSON output and help text from your descriptions.

  5. Tell agents about it

    Mention it in your docs and in an AGENTS.md or skill, so Claude Code and Codex know when to reach for it.

terminal
$ npx @flow-engineer/flow new my-agent
$ cd my-agent
$ npx @flow-engineer/flow test
✓ 24 scenarios passing

Guide

CLIs for coding agents, explained.

CLI vs MCP for AI agents

An MCP server puts every tool definition into the assistant’s context on every turn; a CLI is discovered on demand through --help. Benchmarks such as Scalekit’s report MCP using several times more tokens than a CLI for the same task. MCP still wins for signed-in access across assistants and for people who don’t use a terminal. Most teams ship both.

What makes a CLI agent-friendly?

  • --json output that parses cleanly
  • Useful --help on every command
  • No interactive prompts; flags for everything
  • Meaningful exit codes and errors
  • --dry-run for anything that writes
  • A login that works once, then stays out of the way

Can Claude Code and Codex use my CLI?

Yes. Coding agents run shell commands, so any installed CLI is available to them. Describe it in AGENTS.md, CLAUDE.md or a skill so they know when to use it.

Skills, MCP and CLIs together

A skill tells the agent how to do a task, a CLI gives it the commands, and an MCP server gives assistants without a terminal the same abilities. Flow keeps the CLI and MCP server in step because they come from the same tools.

FAQ

CLI questions,
answered.

Is a CLI better than MCP for coding agents?

For coding agents in a terminal, a CLI is often cheaper in tokens because it is discovered on demand. MCP is better for signed-in access across ChatGPT, Claude and other assistants. Flow ships both from the same tools.

Why does MCP use so many tokens?

Each connected server puts all its tool definitions into the context on every turn. Large servers can take tens of thousands of tokens before the user’s prompt.

What makes a CLI agent-friendly?

JSON output, good --help, no interactive prompts, clear exit codes, --dry-run for writes and a one-time login.

How do agents sign in to a CLI?

The developer signs in once and the CLI stores a token. Flow’s CLI handles sign-in per user.

Should I ship an MCP server and a CLI?

Usually yes: the CLI for coding agents, the MCP server for ChatGPT and Claude. With Flow they come from the same tools.

Give coding agents a CLI for your product.

One open-source TypeScript project. The same agent on WhatsApp, iMessage, Telegram, ChatGPT and more.