--server-url as described in Install the CLI.
Before you start
- macOS or Linux, on arm64 or x64. There is no Windows build.
- A browser already signed in to
app.kentron.ai, with an organization selected. If you have no Kentron account yet, create one first — the CLI cannot sign you up. The browser step approves the CLI for whichever organization that browser session is in. With no active organization the page answersSelect a workspace firstand sign-in cannot finish. - Codex on your
PATH, but only for the last step.receipt mcp install codexshells out tocodex mcp addrather than editing the config file itself, so it needs that binary. Everything before it works without Codex.
1
Install the binary
~/.local/bin. If that directory is not on your PATH, the installer prints the exact line to add for your shell. Then confirm it runs:receipt followed by the build version, and only when that flag is the whole command line. Checksums, upgrades, and the one macOS failure worth knowing about — a browser-downloaded tarball is quarantined where a piped install is not — are in Install the CLI.2
Check the endpoint before you sign in
receipt doctor is read-only. It resolves which host you would talk to, probes it, and reports your saved session. It never opens a browser and never prints your token, so it is the safe first move on a machine you have not signed in on.HTTP 400 on the sign-in line is healthy — that endpoint is being asked for a login code it has not been given, and any status at all counts as reachable. When something is genuinely wrong the first line reads receipt doctor: attention needed, the command exits 1, and each Next steps line names the fix. Add --json for the same report as one envelope; that exit code is the right thing for a script to gate on. See receipt doctor.3
Sign in
Receipt Connect is approved — and the terminal prints Receipt sign-in approved., then your account line, the connector catalog and the observer state:4
Confirm which workspace you are in
Sign-in always binds the session to your organization’s Default workspace. Approving in the browser picks the organization, not the workspace.The That mints a new token, rewrites your session file, and prints the workspace it switched to. Selectors match case-insensitively on id, slug or name; an ambiguous one answers
* marks the workspace your token currently carries. To move:workspace '<x>' is ambiguous; use its id.This is the lever that changes everything below it: connections, tool listings and calls are all scoped by the workspace id inside the token. Switching workspaces has the full subcommand list, and Workspaces in the MCP Gateway explains what a workspace holds.5
See what is connected
Step 2 of 2: authorize github with the link, then waits at Press Enter to open github authorization... before opening the browser. You authorize the provider, and the CLI polls every two seconds until a connection for it reports valid, ending with receipt connect: github connection 'default' is ready for server jobs. Picking a multi-word entry out of the interactive numbered menu instead fails with unsupported Receipt Connect onboarding choice: <Label>, so pass the id. Connecting providers from the CLI covers the flags and the failure modes, and Connect an app does the same job in the web interface.Connections created from the CLI always take the name
default — receipt connect sends no connection name, so named connections such as aws.prod come from the web interface only. They land in whichever workspace your session token currently carries, which is Default until you run receipt workspace use.6
List the tools
tools always answers in JSON — the gateway’s result merged into an envelope that names the workspace that answered:annotations.readOnlyHint is authoritative, and write tools appear only after an owner or admin has enabled writes for that connection; there is no per-action approval prompt in this release — see Tools and permissions.An empty list almost always means the workspace in your token holds no valid connection yet; check with receipt workspace current and receipt connect status. Provider-native MCP connectors are the other explanation: they are left out of the aggregate list and reachable only through receipt tools list --connection <connection>.From here, receipt tools describe <tool> returns one entry and receipt tools call <tool> --json '{"key":"value"}' runs it. On call, --json is the tool-argument payload, not an output switch. Full surface: Calling tools and wiring MCP clients.7
Hand the same tools to Codex
codex mcp add, verifies that Codex reports the server afterwards, and prints:codex mcp add fails, or Codex does not report the server afterwards, the previous config is restored before the error is raised. Set CODEX_HOME first if your Codex lives somewhere other than ~/.codex, and run receipt mcp remove codex before reinstalling — a second install onto an existing entry stops with Codex MCP server 'receipt' is already installed; remove it first.The entry Codex gets holds no secret: the CLI refuses to write a client config containing your session token or anything that looks like credential material. What it writes is a launcher for receipt mcp serve, which reads the session file itself — at start only. Restart Codex after installing, and again after any receipt workspace use.For any other MCP client, generate the configuration and paste it in yourself:install, status and remove support Codex only; anything else answers receipt mcp install/status/remove currently supports codex; use 'receipt mcp config --client generic' for other clients.Where that leaves you
A signed-in session bound to one workspace, a view of that workspace’s connections, the tool list they publish, and a Codex client pointed at the same gateway.
~/.receipt/session.json and ~/.receipt/session.prod.json — which holds a 12-hour bearer token. Signing out with receipt logout deletes both files locally but does not revoke the token at the gateway, so treat a leaked copy as live credentials until it expires.
Two parsing quirks catch almost everyone in the first session.
receipt tools --help, receipt mcp --help and receipt workspace --help never print help — those three handlers run before the help check — and a bare receipt starts interactive onboarding, browser sign-in included, rather than showing usage. Everywhere else --help works, along with receipt help and receipt -h, but only with nothing after it: receipt --help connect reads connect as the flag’s value and starts a sign-in. The parsing rules explain the ordering behind both.