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.
CLIs for coding agents
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.
> 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
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.
Pipe deals into anything.
A dry run before it changes anything.
Each developer signs in once.
Brand examples are illustrations of what could be built, not those companies' products.
The usual way vs. Flow
Building it yourself~2–3 weeks
Then every new feature lands twice: once in the CLI and once in the MCP server.
With Flow Frameworkan afternoon
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
Get started
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.
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.
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.
Flow builds a CLI from the same tools: each tool a command, inputs as flags, JSON output and help text from your descriptions.
Mention it in your docs and in an AGENTS.md or skill, so Claude Code and Codex know when to reach for it.
$ npx @flow-engineer/flow new my-agent $ cd my-agent $ npx @flow-engineer/flow test ✓ 24 scenarios passing
Guide
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.
--json output that parses cleanly--help on every command--dry-run for anything that writesYes. 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.
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.
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.
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.
JSON output, good --help, no interactive prompts, clear exit codes, --dry-run for writes and a one-time login.
The developer signs in once and the CLI stores a token. Flow’s CLI handles sign-in per user.
Usually yes: the CLI for coding agents, the MCP server for ChatGPT and Claude. With Flow they come from the same tools.
One open-source TypeScript project. The same agent on WhatsApp, iMessage, Telegram, ChatGPT and more.