The firmfact CLI
Your firm's single source of fact, from the command line.
Firmfact reads the documents behind every licence, from the vendor and from inside the firm, matches invoices to contracts and explains what changed. From the CLI you can send invoices and contracts to be read, see how your spend with Bloomberg, LSEG or FactSet moves, and ask about renewals in plain English.
firmfact is open source under the Apache License 2.0. Its look-ups and analyses are the ones the connector gives any AI assistant that supports remote MCP (Model Context Protocol). It is not a market data feed: everything it returns comes from your workspaces.
Install
macOS
brew install firmfact/tap/firmfact
Linux
curl -fsSL https://firmfact.com/install.sh | sh
It needs OpenSSL 3 to check the signature, or else a signed-in GitHub CLI to check GitHub's build attestation (gh 2.49 or later); with either, the same line works on a Mac.
Windows 11 or Windows Server 2022 or later
In PowerShell:
irm https://firmfact.com/install.ps1 | iex
Any Windows, Windows 10 included
With Scoop:
scoop bucket add firmfact https://github.com/firmfact/scoop-bucket
scoop install firmfact
Any platform, with Go 1.27.1 or newer
go install github.com/firmfact/cli/cmd/firmfact@latest
What the scripts check
Both scripts check that the release comes from firmfact and matches its checksum before they install anything, and install into your home directory without sudo or administrator rights. Before you run one, read the script for Linux or read the script for Windows; the README has the details.
By hand
Download your platform's archive from the releases page, check that our release workflow built it, and put firmfact on your PATH:
gh attestation verify firmfact_<version>_linux_amd64.tar.gz --repo firmfact/cli --cert-identity https://github.com/firmfact/cli/.github/workflows/release.yml@refs/tags/v<version>
Get started
firmfact signup # new here: confirm your work email with a 6-digit code
firmfact login # have an account: sign in through your browser
Signup sets up your own workspace and a Demo workspace of clearly marked sample data; a signup from a new email domain is reviewed by a person first. With SSO or two-factor authentication, finish with firmfact login.
What you can do
firmfact vendors list # who you pay
firmfact contracts list # the contracts behind each licence
firmfact analyze cost-trends --entity-type vendor --entity-name Bloomberg --monthly
firmfact analyze utilization # how much of what you pay for is used
firmfact ask "Which contracts renew in the next 90 days?"
firmfact ask --continue "Which of those are with LSEG?"
List commands cover vendors, contracts, contract items, invoices, products, allocations, cost centres, applications, platforms and projects; --help shows a command's flags, and the README covers every command. Look-ups and analyses only read; ask saves its thread in the workspace.
Upload documents
firmfact upload LSEG-2026-09.pdf --workspace Acme
firmfact upload ~/Invoices/2026-09 --recursive --workspace Acme
Uploading to Acme: 1 new
LSEG-2026-09.pdf: invoice, ready for review
Vendor Refinitiv Limited, linked to LSEG
Invoice INV-8841207, 1 Sep 2026, due 1 Oct 2026; EUR 12,450.00
Contract LSEG Workspace 2026 (C-0042), linked automatically (99%)
Variance EUR 1,550.00 (14.2%) above the contract (preview)
Review https://firmfact.com/accounts/.../documents/...
Nothing is booked until someone publishes it there.
firmfact upload sends invoices, contracts, order forms and spreadsheets through the web app's intake and skips files already there. You need to be an admin or editor of the workspace. After signup the default is the Demo workspace, which is rebuilt from time to time and loses uploads, so pass --workspace (every command takes it) or set a default with firmfact workspaces use <name>. --related sends files that belong together as one group; --no-wait returns once they are sent, and firmfact upload status shows them later.
In scripts
firmfact contract-items list --all --format csv --columns name,userdef_id,monthly_cost > items.csv
firmfact vendors list --all --json | jq -r .name
--json prints data, meta and notes (with --all, the rows alone, one per line) and keeps progress on standard error. The README lists what each exit status means.
With an AI assistant
The connector gives Claude, ChatGPT, Copilot and other AI assistants that support remote MCP the same look-ups and analyses, and its cli_commands tool returns the CLI commands for what it does not do, such as uploading documents or exporting a whole list. An AI assistant with a terminal, such as Claude Code, Codex, GitHub Copilot or Cursor, can run the CLI itself: the agent skill describes the commands for it, and firmfact connect claude-code adds the connector and that skill to Claude Code.
Plans
- Uploading documents works on every plan, the free Starter plan included; uploads count towards your plan's incoming documents per month.
- The Demo workspace works on every plan.
-
Your own workspace's data needs the Professional plan or above for look-ups, analyses and
ask: the plans with API and MCP access.
Starter has no trial clock; pricing is published in full.
Security and your data
- The CLI sees only what you see in the web app.
-
firmfact logoutends the session on the server; a workspace admin can also revoke it under Settings → MCP in the workspace chosen at sign-in. - Answers to
askare prepared with the AI sub-processor named in the privacy notice, which keeps neither the question nor the answer: zero data retention is enabled on our account with it. Firmfact does not use your workspace data to train or improve any AI model, and does not authorise any sub-processor to do so. - The README sets out how the CLI stores your sign-in.
- Report a security issue privately to security@firmfact.com.
Updates and help
- The CLI checks daily for a newer release and prints the upgrade command:
brew upgrade firmfact,scoop update firmfactor, for any other install,firmfact update. -
firmfact claimmakesffrun the CLI, asking first ifffis taken;firmfact claim --undoremoves it. -
firmfact doctorchecks the installation, connection and sign-in, and says what to fix. - Report bugs on GitHub with the output of
firmfact version; anything else to support@firmfact.com.
More ways in
App, API, MCP and CLI compares the four; see also API authentication.