Licence management for market data and information teams
Web app, API, MCP or CLI:
one source of fact, four ways in.
Firmfact reads the documents behind every licence, from vendors such as Bloomberg, LSEG and FactSet and from inside the firm, matches each invoice to its contract, explains what changed and allocates the cost to the cost centres and people that use it. The facts are the same whichever way you reach them: the web app, the REST API, an AI assistant such as Claude over MCP (the Model Context Protocol, an open standard that lets AI assistants use other software) or the CLI, and your permissions come with you.
At a glance
Four ways into the same facts
For the market data or information team, finance and procurement
Web app
The whole workspace, for the people who run it: where documents are reviewed and changes confirmed.
- Best for
Reading in contracts and invoices, matching invoices to contracts, explaining variances, allocating costs to cost centres and people, preparing renewals.
- How you connect
Sign in from any browser.
- Plans
Every plan, including Starter, which is free.
For your developers, connecting Firmfact to your own systems
REST API
Your code decides what to call. Documented endpoints return the same shape of answer every time.
- Best for
Integrations that run unattended: costs into your reporting, cost centres, projects and allocations kept in step with your own systems.
- How you connect
An API token from Settings → API Tokens, sent with each request.
- Plans
Professional and above.
For anyone in the team who works with an AI assistant
MCP connector
Your AI assistant decides which Firmfact tools to call to answer your question, then writes up the answer. MCP is an open standard, so the connector is not tied to one assistant.
- Best for
Questions in plain English: what you spend with Bloomberg and how it moves, who holds which LSEG or FactSet subscriptions, which subscriptions are under-used.
- How you connect
In Claude, add the connector's URL and sign in; there is no token to paste. Other AI clients that support remote MCP servers use the same URL, and Settings → MCP shows how to connect yours.
- Plans
The Demo workspace on every plan; your own workspace on Professional and above.
For analysts and engineers on the market data team
CLI
You type the command, or your script does. Its look-up commands are the connector's tools, with output a script can use, and it sends documents for Firmfact to read.
- Best for
The month's invoices sent from a folder in one command, contract line items to CSV for the budget model, monthly Bloomberg spend as JSON for a script, the contracts that renew in the next 90 days asked from a terminal.
- How you connect
Run
firmfact signupfor a new account, orfirmfact loginto sign in through your browser.- Plans
Uploading documents on every plan. Looking things up as for MCP: the Demo workspace on every plan, your own on Professional and above.
By job
Which way in for which job
Eight situations a market data team meets, and the way in that suits each one.
Month end, and the LSEG invoice does not match what the contract says. Forward it to the workspace's own inbox address: Firmfact reads it, matches it to the contract and explains the variance, and someone on the team confirms it in a short review.
A new vendor agreement arrives. Firmfact reads it and checks it against what should be in it, DORA included, so the gaps are on the table before anyone signs off.
Group finance wants market data costs by cost centre and legal entity in its own reporting. A scheduled job reads them from the API, so nobody exports a spreadsheet each month.
A cost centre opens or a project closes in the ERP. An overnight job makes the same change in Firmfact through the API, and the change keeps its history.
Before a Bloomberg review, the head of market data asks Claude who holds Bloomberg subscriptions and whether anyone holds more than one.
A controller asks the AI assistant the finance team already uses how much has gone to FactSet over the last 12 months, and which FactSet subscriptions are under-used.
An analyst needs every contract line item in the budget model. One command writes them to CSV, and a scheduled job can run the same command each month.
firmfact contract-items list --all --format csv
The vendor invoices land in a shared folder. A nightly job sends the new ones, and its JSON carries each invoice's contract match and variance preview, so the job can tell someone when one is more than 2% from its contract. Nothing is booked until someone on the team publishes it.
firmfact upload ~/Invoices --recursive --workspace Acme --json
MCP vs API
MCP vs API: which should connect to Firmfact?
The API is for software: a scheduled job that puts market data costs by cost centre and legal entity into group reporting, or keeps cost centres in step with the ERP. MCP is for a person: the head of market data asking an AI assistant such as Claude who holds Bloomberg subscriptions before a review. Both reach the same workspace; the difference is who decides what to call.
REST API
Your code decides
Your integration calls documented endpoints on a schedule and gets the same shape of answer every time. It reads vendors, contracts, invoices, cost centres, legal entities, allocations and their costs, and it can write back: it creates and updates cost centres, projects, vendors, products and allocations, through the same checks as the web app. Choose it for integrations that run without anyone watching.
MCP connector
The assistant decides
The connector is an MCP server. It offers your AI assistant a set of Firmfact tools (list the vendors, analyse cost trends, see who holds a subscription), and the assistant picks the ones your question needs and writes up the answer with the figures behind it. Over MCP, Firmfact reads; any change it suggests is confirmed in the web app. Choose it when a person has a question.
MCP vs CLI
MCP vs CLI: a conversation or a command
The CLI's look-up commands are the connector's tools. firmfact vendors list runs the tool your assistant calls when you ask about your vendors, and a tool added to Firmfact appears as a command without a new CLI release. A tool gives the same answer either way; what differs is who chooses the tool and its arguments. Over MCP, the AI model decides, and the same question can take a different route. With the CLI, you or your script decide, so the same command gives the same result every time. For looking things up, the choice is not what you can reach but how you want to work. The CLI also sends documents: firmfact upload puts invoices, contracts and spreadsheets through the same intake as the web app.
In an AI assistant, over MCP
“How much have we spent on Bloomberg over the last 12 months, and what is the trend?”
The assistant picks the cost-trends tool, reads the result and answers in prose, ready for your follow-up question.
In a terminal, with the CLI
firmfact analyze cost-trends --entity-type vendor --entity-name Bloomberg --months-back 12 --monthly
The same Bloomberg question, as a command: you pick the tool and its arguments, and --monthly adds the month-by-month totals. Add --json for a script; each kind of failure has its own exit status, so a script can tell a typo from an ended session. firmfact ask puts a plain-English question from the terminal too.
And the API or the CLI?
Both suit scripts. The CLI signs in as you: it looks things up, asks and sends documents to be read, with nothing to build beyond the command. The API is for integrations your developers build and maintain, and it is the one that writes to your workspace directly: cost centres, projects, vendors, products and allocations.
Same facts, same rules
Your permissions come with you
- One set of permissions. The API acts as the person whose token it is. The connector and the CLI see exactly what you see in the web app, with your permissions and legal-entity scope, and nothing beyond it.
- Changes keep their history. A cost centre created through the API passes the same checks as one created in the web app, and every change is dated, so earlier versions are never lost.
- A conversation or an upload changes nothing on its own. Over MCP and the CLI, a question and its answer are saved as a chat thread you can review in the web app, and any change it suggests is confirmed there. A document sent with the CLI goes through the same intake as the web app, and nothing is booked until someone publishes it.
- Sample data first, if you like. Every signup includes a Demo workspace with clearly marked sample data, which you can connect over MCP or the CLI on every plan.
- You decide who is connected. Settings → MCP lists the AI clients whose sign-in was approved for that workspace, the CLI included, and revoking one refuses its next request; removing a person from a workspace cuts off every connection of theirs to it. API tokens are revoked under Settings → API Tokens.
Your workspace data stays in the European Union, as set out on the security page. Over MCP, answers go to the AI client that asked for them and are handled under that client's terms.
App, API, MCP and CLI, answered
Does Firmfact have an API?
Yes. Firmfact has a REST API on Professional and above. It reads vendors, contracts, invoices, cost centres, legal entities, allocations and their costs, and it creates and updates cost centres, projects, vendors, products and allocations. You create a token under Settings → API Tokens; the API authentication guide is public, and the full reference opens after sign-in on a paid plan.
Which plans include the API and MCP?
Professional, Enterprise and Enterprise Plus include API and MCP access to your own workspace. Starter, the free plan, covers the daily core in the web app (contract intake, invoice matching, allocations and the AI that reads documents) without API or MCP access to your own workspace. The Demo workspace included with every signup is connectable over MCP and from the CLI on every plan, including Starter, so you can try both on sample data first. Uploading documents from the CLI works on every plan, as document intake does.
Is MCP the same as an API?
Not quite. An API is a set of endpoints your code calls, and your code decides what to call. MCP, the Model Context Protocol, is an open standard for AI assistants: an MCP server describes its tools, and any assistant that supports MCP, such as Claude, decides which ones to call to answer a question. Firmfact offers both over the same workspace: the REST API for integrations such as costs by cost centre into group reporting, the MCP connector for questions such as who holds Bloomberg subscriptions.
MCP or CLI: which should I use?
Use the MCP connector when you want to ask a question and read the answer, and the CLI when you want a command that does the same thing every time, from a terminal, a script or a scheduled job. Both reach the same Firmfact tools with the same permissions; the CLI adds table, JSON and CSV output and exit statuses a script can act on. The CLI also sends documents to be read, which the connector does not.
Can I use Firmfact from the command line?
Yes. The Firmfact CLI runs on macOS, Windows and Linux and is open source under the Apache License 2.0. It looks up vendors, contracts and allocations, analyses spend, allocations and utilisation, puts plain-English questions to your workspace with its ask command, and sends invoices, contracts, order forms and spreadsheets for Firmfact to read with its upload command. The CLI page covers installation.
Can I sign up without a browser?
Yes, with the CLI: its signup command asks for your work email, name and organisation, emails you a 6-digit code, and creates your own workspace plus a Demo workspace with clearly marked sample data. A signup from a domain we do not know yet is reviewed by a person first, and we email you once it is approved. It is free, with no trial clock.
Do my permissions apply in AI assistants and the CLI?
Yes. The connector and the CLI see exactly what you see in the web app, with your permissions and legal-entity scope, and nothing beyond it. A question and its answer are saved as a chat thread in the workspace, and any change is confirmed in the web app. Uploading from the CLI needs an admin or editor role in the workspace, and nothing is booked until someone publishes it in the web app.
Start free, then choose your way in
Start free, with no trial clock. Signup includes your own workspace for real data and a Demo workspace with clearly marked sample data, which you can connect over MCP or the CLI on every plan.