Kresmion
Read-only market intelligence for AI agents: prediction markets, on-chain and ETF flows, SEC filings, 13F, macro regime.
Hosted MCP Server
npx add-mcp 'https://kresmion.com/api/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Market intelligence for bots, apps and AI assistants. One HTTP API over SEC filings and reported financials, insider and congressional disclosures, macro, on-chain crypto flows, and Polymarket prediction markets, with the source and date on the records that carry them. Authenticate with a Bearer key, read the live OpenAPI spec, subscribe to webhooks, or connect an AI agent over MCP. It is information-only and does not provide investment advice.
Base URL: https://kresmion.com/api/v1 Auth: Authorization: Bearer krm_...Spec: openapi.json
Connect to Claude or ChatGPT
The fastest way in needs no key. Your assistant signs in with your Kresmion account over OAuth and gets read-only access to the data.
- In Claude, open Settings, then Connectors, then Add custom connector. Paste
https://kresmion.com/api/mcpand leave the OAuth fields empty. - In ChatGPT, where your plan offers custom connectors, add one with the same URL and choose OAuth.
- Sign in with Kresmion and approve read access. The connection appears as an OAuth key in /settings/api-keys. To disconnect, use Disconnect in /settings/connected-apps, which also ends the app's sign-in so it cannot mint a new key.
Then ask
Filings
What did NVIDIA report as revenue and net income in its last three quarterly filings, and which filings are those numbers from? Link each one.
Disclosures
Since last Monday, which companies had a multi-insider Form 4 cluster or showed up in a congressional disclosure? Show the filing dates and the lag between trade and disclosure.
Macro
Is anything in the Fed and rates backdrop unusual this week, and how do markets price the next FOMC? Cite the date and source of the figures you use.
Answers come from the tools with the as_of time and the source on the records that carry them, and from filings with the accession number and the sec.gov link. The server also offers three ready-made prompts:
filing_brief: a dated brief of a company's recent SEC filings and reported figures, each with its accession and sec.gov link.what_changed_since: what was recorded since a date: insider clusters, congressional disclosures and other changed rows, with event and disclosure dates.macro_backdrop: the macro and rates backdrop, with dates and sources.
Quickstart
Mint a key at /settings/api-keys, then list a company's latest SEC filings and its reported revenue, each value with the filing it comes from. Send the key as a Bearer token on every request.
# the five latest 10-Q and 10-K filings, each with its accession and sec.gov link
curl -s "https://kresmion.com/api/v1/companies/NVDA/filings?form=10-Q,10-K&limit=5" \
-H "Authorization: Bearer krm_your_key_here"
# revenue from the three latest 10-Q filings, each value with the filing it comes from
# (quarter_value is the three months, value is year to date)
curl -s "https://kresmion.com/api/v1/companies/NVDA/financials?metric=revenue&period=quarterly&limit=3" \
-H "Authorization: Bearer krm_your_key_here"
Products
6 product areas, each with representative endpoints. The full, authoritative list is in the live reference below. Every response is the same envelope: data, count for lists, as_of for freshness, and meta for filters, sources, caveats, and attribution.
Prediction Markets
Polymarket markets: probability history, order books and their history, execution cost, smart-money and algorithmic flow flags, movers, the resolution calendar, calibration, and resolutions.
- GET /v1/prediction/markets
- GET /v1/prediction/markets/{market_id}/history
- GET /v1/prediction/markets/{market_id}/book
- GET /v1/prediction/movers
- GET /v1/prediction/calibration
Crypto
Labeled whale transfers, exchange wallet holdings, perpetual derivatives, funding and liquidations, token unlocks, and spot ETF AUM and fund counts. BTC and ETH ETF flows per trading session come back withheld (total_kind 'withheld', withheld_reason 'source_not_licensed'): the only per-fund session flows held for them carry no redistribution licence.
- GET /v1/crypto/whales
- GET /v1/crypto/exchanges/holdings
- GET /v1/crypto/etf/flows
- GET /v1/crypto/derivatives/{symbol}
- GET /v1/crypto/funding
- GET /v1/crypto/liquidations
Equities
Filing events, SEC Form 4 insider clusters, congressional trade disclosures, 13F institutional positioning, FINRA short interest, and FINRA daily short volume.
- GET /v1/equities/signals
- GET /v1/equities/insider-clusters
- GET /v1/equities/congress
- GET /v1/equities/institutional
- GET /v1/equities/short-interest
- GET /v1/equities/short-volume
Macro and Rates
The cross-asset regime score, central bank policy rates and their moves, US money markets and the Fed corridor, sovereign 10Y spreads (a Kresmion calculation, not a credit rating), official economic statistics by country from the World Bank and the OECD, the Fed path ladder (FOMC decision-outcome prices on Polymarket), the Treasury curve through history, curated FRED series, the economic surprise index, Fed liquidity, CFTC Commitments of Traders, Treasury TIC flows, and BIS policy rates.
- GET /v1/macro/regime
- GET /v1/macro/central-banks
- GET /v1/macro/money-markets
- GET /v1/macro/sovereign-spreads
- GET /v1/macro/economics
- GET /v1/macro/fed/path
- GET /v1/macro/yield-curve/history
- GET /v1/macro/fred/{series_id}/history
- GET /v1/macro/surprise
- GET /v1/macro/cot
- GET /v1/macro/tic
- GET /v1/macro/bis
Companies
Peer relative value from SEC fundamentals, a multi-filter screen, and IPOs and equity offerings from EDGAR with their prospectus terms.
- GET /v1/rv/{ticker}
- GET /v1/rv/{ticker}/matrix
- POST /v1/screen
- GET /v1/intel/offerings
- GET /v1/intel/offerings/ipo-pipeline
Events and Intelligence
One feed of scored events across equities, crypto, macro, and prediction markets; the published track record (forward returns after every logged event, losses included); cross-family confluence composites with legs listed; per-ticker smart-money scores; a per-symbol brief; and a delta feed for polling agents.
- GET /v1/signals
- GET /v1/track-record
- GET /v1/confluence
- GET /v1/equities/smart-money
- GET /v1/brief/{asset_class}/{symbol}
- GET /v1/changes
- GET /v1/status
API reference
Rendered live from the OpenAPI spec: every endpoint grouped by tag, with parameters and responses. Expand a row for details.
Loading the live API reference...
Errors
A 400, 404, 422 or 429 answers with {"detail": {"code", "message", "hint", "docs_url"}}. The code is stable and safe to branch on, the hint says what to change (for example which id forms a route accepts), a 422 adds the failing errors, and a 429 adds retry_after in seconds. 401 and 403 keep a plain message. Not sure which id to send? Ask GET /v1/search?q= first. Over MCP, every failure comes back as a tool error with the same fields.
Rate limits and tiers
Kresmion is in a free beta and billing is not switched on. Every registered account can self-serve an API key, and the API, the MCP server, the SDK and the Excel add-in all run on that key at no charge. Requests over the per-minute limit get a 429 with a Retry-After header telling you how long to wait; the monthly quota resets each calendar month.
| Tier | Monthly calls | Rate limit | Over limit | Access |
|---|---|---|---|---|
| Free beta (registered) | 10,000 | 120 req / min | 429 + Retry-After | Self-serve key, today |
| Basic (planned) | Not included | Not included | Not applicable | No API or MCP access |
| Developer (planned) | 100,000 | 600 req / min | 429 + Retry-After | When billing opens |
| Business | By agreement | By agreement | 429 + Retry-After | Contact us |
When billing opens, the API and the MCP server come with the Developer plan on the pricing page, at EUR 80 a month excluding VAT, with 100,000 calls a month and 600 requests a minute. Basic does not include them. During the free beta, every account gets 10,000 API calls a month and 120 requests a minute, and nothing is charged. Need more today? Email inquiry@kresmion.com.
Securing a key
A key is for reading data. A request made with a key using a write method (POST, PUT, DELETE) is refused with a 403, except the two POST routes that carry a query body and write nothing (the screen and the sheet evaluator); account data such as portfolios and messages needs a signed-in session. You can lock a key to specific source addresses from /settings/api-keys. An allowlisted key is rejected with a 401 when it is presented from any other address. The allowlist takes exact IPv4 and IPv6 addresses; leave it empty to accept any address. Keys are shown in full only once at creation, can be revoked at any time, and you can hold up to five active keys per account.
Attribution and caveats
Some data owners require a credit line wherever their data is shown. When they do, the response carries it in meta.attribution, and you must keep that text with the figures when you display, store, or pass them on. Two families carry it today:
- Short volume: "Source: FINRA. Reg SHO Daily Short Sale Volume data owned by FINRA."
- Sovereign spreads: the ECB source line and its free-of-charge notice, the statement that the spreads are computed by Kresmion from the published yields, the OECD and Federal Reserve H.15 citations, and the FRED notice. A spread is a calculation from published yields, not a credit rating.
meta.caveats lists the known limits of a dataset (a lag, a single venue, a withheld value) and meta.source names the upstream. MCP tools return the envelope unchanged, and the Python SDK exposes it as .meta on every result. Read the methodology for how each figure is built.
Per record, company filings and financials carry accession_number, filing_date and sec_url on every row, and rows from disclosures (insider clusters, congressional trades, 13F holdings, and events with an originating filing) carry a citation object: source, url, accession, filed and observed_at. Quote the url next to the number. Not sure which id a route takes? GET /v1/search?q=NVIDIA resolves a company name, ticker, CIK, prediction market or FRED series to the id the other routes accept (the MCP tool is resolve).
Webhooks
Subscribe to push events instead of polling. Manage up to five webhooks per account at /settings/webhooks, optionally filtered to event types and symbols. Each delivery is signed with HMAC-SHA256 over the raw body, sent as X-Kresmion-Signature: sha256=<hex>, so you can verify it came from Kresmion.
| Event | Fires when |
|---|---|
| signal.created | A new cross-asset event fired at the top severity tier. |
| whale.transfer | A single on-chain transfer of $1,000,000 or more (self-transfer artifacts excluded). |
| prediction.repricing | A Polymarket market moved 10 percentage points or more in 24 hours. |
| prediction.resolution_imminent | A liquid Polymarket market is scheduled to close within 48 hours. |
| prediction.algo_flow | A high-confidence algorithmic-flow flag on a Polymarket market. |
| etf.flow | A new daily crypto ETF print. BTC and ETH session flow values are withheld; AUM and fund count are sent. |
| regime.change | The daily macro regime crossed into a new bucket. |
| confluence.fired | Several independent data families aligned on one symbol. |
{
"event": "whale.transfer",
"fired_at": "2026-07-16T14:05:00+00:00",
"data": {
"blockchain": "ETH",
"from_label": null,
"to_label": "Binance",
"direction": "exchange_inflow",
"amount_usd": 4200000.0,
"tx_hash": "0xabc...",
"tx_timestamp": "2026-07-16T14:04:12+00:00"
}
}
import hashlib
import hmac
def verify(secret: str, raw_body: bytes, signature: str) -> bool:
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
# In your handler, read the raw request body and the signature header:
# sig = request.headers["X-Kresmion-Signature"] # "sha256=<hex>"
# if not verify(WEBHOOK_SECRET, raw_body, sig):
# return 401 # reject a forged payload
MCP for AI agents
AI agents connect to Kresmion over the Model Context Protocol. The hosted server exposes 47 tools: 47 read data, and none writes, pays or changes state. Every tool response carries the same envelope and freshness stamp as the HTTP API, and the same key, quota, and rate limits apply. Start with kresmion_status to see how fresh each family is.
Start here
kresmion_status, kresmion_brief, changes_since, field_search, resolve
SEC filings
company_filings, filing_excerpts, company_financials
Prediction markets (Polymarket)
prediction_markets, prediction_market_detail, prediction_market_history, prediction_order_book, prediction_movers, prediction_calibration, prediction_execution_cost, prediction_calendar
Crypto
crypto_whale_transfers, crypto_etf_flows, crypto_derivatives, crypto_funding, crypto_liquidations
Equities and companies
equity_signals, insider_clusters, congress_trades, institutional_holdings, equity_short_interest, short_volume, equity_gamma, smart_money, equity_offerings, relative_value
Macro and rates
macro_regime, central_banks, bis_policy_rates, money_markets, sovereign_spreads, economic_statistics, fed_path, yield_curve_history, fred_history, economic_surprise, macro_liquidity, cot_positioning, treasury_tic
Supply chain
semiconductor_corridors
Event record
signal_track_record, confluence
Web clients that connect by OAuth need no pasted key. Add a custom connector with the URL https://kresmion.com/api/mcp and leave the OAuth fields empty. The client discovers the Kresmion authorization server, opens the Kresmion consent page, and after you approve it while signed in, it receives a managed key with the kresmion:read scope, limited to the data API. That key appears in /settings/api-keys as an OAuth key and shares your account's quota. To disconnect, use Disconnect in /settings/connected-apps, which also ends the app's sign-in. ChatGPT connects the same way where your plan offers custom connectors.
Hosted endpoint over streamable HTTP, with your key in the header:
{
"mcpServers": {
"kresmion": {
"type": "http",
"url": "https://kresmion.com/api/mcp",
"headers": { "Authorization": "Bearer krm_your_key_here" }
}
}
}
One line in Claude Code:
claude mcp add --transport http kresmion https://kresmion.com/api/mcp \
--header "Authorization: Bearer krm_your_key_here"
Local stdio server
Prefer to run it yourself? The standalone stdio server carries the same 47 tools, generated from the hosted server, and calls the same HTTP API with your key from the environment. Download /sdk/kresmion_mcp.py:
# download the standalone server, then register it over stdio
curl -sO https://kresmion.com/sdk/kresmion_mcp.py
{
"mcpServers": {
"kresmion": {
"command": "uv",
"args": ["run", "--with", "mcp", "--with", "httpx", "/absolute/path/to/kresmion_mcp.py"],
"env": { "KRESMION_API_KEY": "krm_your_key_here" }
}
}
}
# without uv: pip install "mcp>=1.28" "httpx>=0.27", then run python kresmion_mcp.py
Python SDK
The kresmion package wraps the /v1 API in namespaced methods (k.prediction, k.crypto, k.equities, k.macro and more) and honours Retry-After. SDK version 0.6.1 is the single-file build served here; it needs Python 3.9 or newer and requests. pip install kresmion installs the same version, 0.6.1, or download the file:
curl -O https://kresmion.com/sdk/kresmion.py
pip install "requests>=2.28"
Every result carries .as_of and .meta, which holds the caveats, source, and any attribution line you must reproduce:
from kresmion import Kresmion
k = Kresmion() # reads KRESMION_API_KEY
spreads = k.macro.sovereign_spreads(country="IT")
print(spreads.as_of, spreads.meta.get("attribution"))
Version 0.4.0 removed six methods together with their routes, because the data behind them carries no redistribution licence: prediction.consensus, prediction.divergence, prediction.options_divergence, prediction.options_divergence_history, crypto.options, and crypto.stablecoins. Later versions only add methods and parameters.
Excel add-in
The Excel add-in ships 25 worksheet functions, from =KRESMION.REGIME() and =KRESMION.CBRATE("US") to =KRESMION.YIELD("10Y"), backed by the same live data API as the on-site sheet. It works in Excel for Windows and Mac and in Excel for the web. To install it, open Insert, then Get Add-ins, then Upload My Add-in, and select the manifest at kresmion.com/excel-addin/manifest.xml. Open the Kresmion taskpane, paste your API key, and click Connect; the taskpane lists every function with an example.
The API is free during beta. There is no uptime SLA yet, and figures can lag their upstream sources or be revised. Read the methodology and data caveats before you build on a number. Information-only, not investment advice.