OpenBB unified the workspace. Nobody unified the keys.
OpenBB gives you one command shape for every kind of financial data. It does not give you the accounts. Covering the analysis we actually do took seven separate signups, so we wrote a provider that makes it one: 141 OpenBB commands from a single key.

Want a company’s balance sheet in code? You need an API key. Inflation for the same script? A different key. How futures traders are positioned? A third one, from a third company, with a third rate limit and a third invoice.
That is the part nobody warns you about when you start pulling financial data. The code is easy. The accounts are the work.
OpenBB unified the workspace, and did it beautifully. It is free, open-source software that does what the expensive trading-desk terminals do: one consistent command for every kind of financial data, in Python, scriptable. obb.equity.price.historical("AAPL") gets prices. obb.economy.cpi() gets inflation. Whatever supplied the numbers, the thing that comes back has the same shape, so you write your analysis once and change the data underneath without touching your code.
Nobody unified the keys.
That is not a complaint about OpenBB, it is the shape of the problem. A workspace can normalise how you ask. It cannot normalise who you have to ask.
Run your first command after installing and you get an error: no provider configured. Because OpenBB does not own data. It ships adapters, every adapter points at somebody else’s API, and that somebody wants an account. Configure one, and the next command needs a different one.
We hit this ourselves, because we use OpenBB in our own work. Counting the providers we needed to cover the analysis we actually do, the answer was seven separate accounts.
So we wrote an extension that makes it one. openbb-sugra serves 141 OpenBB commands across fourteen command groups from a single Sugra key.
Count it yourself
These are not claims about our data. They are arithmetic over the OpenBB source tree, reproducible from the public repository.
Take the models our provider registers, then ask which first-party providers offer those same models:
standard models our provider covers 140
first-party providers you would touch instead 17
of those, providers that require their own key 7
(140 models, 141 commands, because one model serves two commands.)
The seven are fmp, fred, bls, nasdaq, econdb, eia and cftc, and they split into two kinds.
Four are government. The Federal Reserve Bank of St. Louis, the Bureau of Labor Statistics, the Energy Information Administration and the Commodity Futures Trading Commission all hand out keys for nothing. Free, but still four registrations, four confirmation emails, four credentials to store and rotate.
Three are commercial, and those come with a subscription as well as a signup. Between them they gate 26 of the models our provider covers, including the entire equity fundamentals layer. Balance sheets, income statements, cash flow, ratios, estimates: not reachable from OpenBB without paying somebody.
Sixty-one models you cannot reach without somebody’s key
Of the models our provider covers, 61 are available from a first-party provider only if you hold that provider’s credential:
fred 29 models government key, free
fmp 18 models commercial subscription
econdb 7 models commercial subscription
bls 2 models government key, free
cftc 2 models government token, free
eia 2 models government key, free
fmp or nasdaq 1 model commercial subscription
The 29 are the macro backbone. The 26 commercial ones are company fundamentals and part of the macro panel. Neither group is exotic; both are the first thing anyone reaches for.
Eighteen models nobody else in OpenBB provides
Eighteen of our models have no first-party provider at all:
MaritimeChokePointInfo MaritimeChokePointVolume PortInfo
CompositeLeadingIndicator CountryInterestRates DirectionOfTrade
GdpForecast HousePriceIndex SharePriceIndex
Unemployment ForwardSalesEstimates TrailingDividendYield
HistoricalAttributes LatestAttributes EquityUndervaluedGrowth
EquityUndervaluedLargeCaps EquityAggressiveSmallCaps GrowthTechEquities
Three are maritime. obb.economy.shipping.chokepoint_volume returns nothing at all unless our provider is installed. (The neighbouring port_volume is the exception, reachable through one commercial provider.)
That matters more than a count suggests, because shipping is where a lot of macro questions actually resolve. A commodity moves, the coverage offers a reason, and transit numbers are what tell you whether the reason is real.
What you can do with one key
Not a feature list. Four things you would actually sit down and do, each with a single credential.
Look at a company from four angles.
from openbb import obb
obb.equity.price.quote("AAPL", provider="sugra")
obb.equity.fundamental.metrics("AAPL", provider="sugra")
obb.equity.ownership.form_13f("0001067983", provider="sugra")
obb.equity.shorts.fails_to_deliver("AAPL", provider="sugra")
obb.news.company("AAPL", provider="sugra")
Price, fundamentals, who holds it, settlement failures, and what is being written. Natively that spans a commercial subscription and two government registrations.
Build a macro panel.
obb.economy.cpi(country="united_states", provider="sugra")
obb.fixedincome.rate.effr(provider="sugra")
obb.fixedincome.government.yield_curve(provider="sugra")
obb.economy.unemployment(provider="sugra")
Inflation, the policy rate, the curve the market is pricing against it, and labour. Three of those four are government sources that each want their own key.
Ask a question that crosses domains.
obb.commodity.price.spot(provider="sugra")
obb.economy.shipping.chokepoint_volume(provider="sugra")
obb.cftc.cot(provider="sugra")
Commodity price, physical transit through the world’s chokepoints, and how futures traders are positioned. This is the combination that tells you whether a price move is a story or a shipment that stopped, and until now the middle line was not available from an OpenBB command at all.
Look through an ETF and down a futures curve.
obb.etf.holdings("SPY", provider="sugra")
obb.derivatives.futures.curve("CL", provider="sugra")
Same objects, same commands, same dataframes as any other provider. The only difference is how many places you had to go to get started.
Before and after, in the settings file
Before, in ~/.openbb_platform/user_settings.json:
{ "credentials": {
"fmp_api_key": "...",
"fred_api_key": "...",
"bls_api_key": "...",
"nasdaq_api_key": "...",
"econdb_api_key": "...",
"eia_api_key": "...",
"cftc_app_token": "..."
}}
After:
{ "credentials": { "sugra_api_key": "..." } }
Seven signups become one. Seven rate limits with seven reset behaviours become one. In a notebook you share with a colleague, seven blanks they must fill before running your work become one.
The same key goes into other tools
OpenBB is one place a research stack lives. It is not the only one, and the key does not change.
Any MCP client. sugra-api-mcp is the Model Context Protocol server for the same API, and it works with ChatGPT, Claude, Gemini, xAI, Cursor and VS Code. Install it and your assistant can pull live data with source attribution instead of answering from memory. It is listed in the official OpenAI plugins directory.
pip install sugra-api-mcp
Anything that speaks HTTP. Underneath both packages is a plain REST API with an x-api-key header, so a dashboard, a scheduled job, a spreadsheet script or a backtester reaches the same data with no SDK at all.
That is the actual shape of the offer. Not a terminal, not a notebook plugin: one credential that follows you across whichever tool you happen to be working in.
Install
pip install openbb-sugra
export OPENBB_SUGRA_API_KEY="your_key"
The provider auto-registers through the openbb_provider_extension entry point, so import openbb picks it up and rebuilds the static package.
Things worth knowing
It sits alongside the others. OpenBB resolves the provider per call, so provider="sugra" on one line and something else on the next is normal usage. Keys you already hold and like, keep.
Every model is live-verified. Each fetcher has been run against the live API and back through the obb.* layer before shipping, not just tested against a recorded fixture.
Pricing is by volume, not by feature. Every command above works on every plan including the free one. There is no tier where a command group is switched off.
The coverage matrix is generated. COVERAGE.md is produced from the shipped fetchers, so it cannot drift from what the package registers.
We are building this because we use it
This is not a side project we shipped once and forgot. We run OpenBB in our own work, and every model in the package went in because somebody here wanted it on a real question, not because it looked good in a coverage table.
Which also means we are watching upstream. OpenBB moves, models get added and standard schemas change, and the provider follows. Version 0.2.1 tracks the current platform release. More models are in development, coverage of the groups we already touch keeps widening, and the gaps we have not filled yet are tracked rather than ignored.
If something you need is missing, that is worth telling us: open an issue. The roadmap is largely made of things people asked for.
pip install openbb-sugra
Key at sugra.ai. Source and the full coverage matrix at github.com/Sugra-Systems/openbb-sugra. Package on PyPI.
And if you would rather check the arithmetic than take it on trust: clone the OpenBB repository, walk openbb_platform/providers/*/openbb_*/__init__.py, count the credentials= declarations and the fetcher_dict entries. That is exactly how the numbers above were produced.
More versions coming. Stay tuned.
