Command-line tools built for agents.

I run most of my own work through coding agents, and they are only as useful as the tools they can call. These clients are built so an agent can read, write and recover without a browser or a human in the loop. Free to use and read.
Why I build them

WhyCLIs,notMCPservers

An agent can only think about what fits in its context window. Every MCP server you connect fills part of that window before the conversation starts. A command-line tool takes none of it until the moment it runs.

An MCP server

  • Costs you before you start

    The agent reads the name, description and full schema of every tool on the server, up front, whether this job needs them or not. Add a few servers and a big slice of the context window is gone before you type a word.

  • Crowds the model's attention

    All of that is weighed on every turn. Dozens of similar-looking tools means more chances to call the wrong one, invent a parameter, or confidently report something that never happened.

  • Adds another moving part

    A server to start, a transport to debug, a session to keep alive. When it breaks you are guessing at what the agent actually saw.

A command-line tool

  • Costs nothing until it runs

    The agent already has a terminal. The tool adds nothing to the context until it is called, and when the agent needs the details it runs --help on that one command and reads a few hundred tokens.

  • Sends back only the answer

    Output pipes through jq or grep before the model reads it. Fewer tokens on every turn means quicker responses, lower cost and more room for the actual problem.

  • Shows me exactly what the agent saw

    One binary, no server. When something breaks I run the same command in my own terminal and get the same output, so it gets fixed fast.

MCP still has its place: hosted tools where many people sign in with their own accounts, or apps with no terminal. For an agent working in a shell, a well-built CLI does the same job with less noise. The numbers, the sources and the trade-offs are in the full write-up.

Open source

Therepositories

Free to install, read and fork. Xero and Outlook follow once they are cleaned up.

notion-cli

TypeScript12

A command-line client for Notion with JSON output on every command, so an agent can read, write and search a workspace without a browser.

npm install -g @coastal-programs/notion-cliView on GitHub

inggest-cli

TypeScript0

A command-line client for Inngest events, runs and functions, built so an agent can inspect and replay background jobs from the terminal.

npm install -g @coastal-programs/inggest-cliView on GitHub
How they are built

Conventionseverytoolfollows

An agent cannot ask a terminal a clarifying question, so the tools have to be predictable in the ways that matter.

  • JSON envelope on every command

    Every command can return a predictable { ok, data, error } envelope, so an agent parses the result instead of scraping text.

  • Exit codes that mean something

    Zero for success, distinct non-zero codes for auth, validation, not-found and rate-limit errors, so a caller can branch without reading the message.

  • OAuth with PKCE, tokens in the keychain

    Login opens a browser once, tokens live in the operating system keychain, and no secret is ever written to a file an agent could leak.

  • Composite commands for common jobs

    The things an agent does repeatedly (find a page and append to it, replay a failed run) are single commands, not five calls it has to chain.

Next step

Tellmewhatyourbusinessrunsontoday

A 30 minute call. You describe the spreadsheets, the apps and the paperwork; I tell you what I would build and roughly what it would cost.