FinBERT news sentiment and price history for 42 crypto, FX, stock, ETF and commodity tickers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
SentimentFX API key. Free key (100 calls, no card) at developers.sentimentfx.org
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
180-day Pearson correlation between daily sentiment shifts and next-day price returns for `ticker`. Returns Pearson `r`, `p_value`, `n_days` overlapping, a 95% confidence interval (Fisher z), and a categorical `strength` (strong / weak / inconclusive). Costs 1 API credit — same as GET /v1/correlation/{ticker}. Requires ≥30 overlapping day-pairs. Under that, returns a `note` field explaining what's missing so a caller can suggest waiting or switching to a higher-coverage ticker.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
180-day Pearson correlation between daily sentiment shifts and next-day price returns for `ticker`. Returns Pearson `r`, `p_value`, `n_days` overlapping, a 95% confidence interval (Fisher z), and a categorical `strength` (strong / weak / inconclusive). Costs 1 API credit — same as GET /v1/correlation/{ticker}. Requires ≥30 overlapping day-pairs. Under that, returns a `note` field explaining what's missing so a caller can suggest waiting or switching to a higher-coverage ticker.
| Argument | Type | Description |
|---|---|---|
| ticker* | string |
{
"type": "object",
"title": "get_correlationArguments",
"required": [
"ticker"
],
"properties": {
"ticker": {
"type": "string",
"title": "Ticker"
}
}
}Return daily close prices for `ticker` over the last `days`, in the ticker's native currency -- see the `currency` field on the response. Costs 1 API credit per day actually returned — same as GET /v1/prices/{ticker}. Prices come back reverse-chronological. Crypto is GBP (yfinance BTC-GBP etc.), FX pairs are a raw exchange rate in the pair's native convention (e.g. USDJPY is yen per dollar), and everything else (stocks/ETFs/commodity futures) is native USD -- there is no currency conversion.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| ticker* | string |
{
"type": "object",
"title": "get_pricesArguments",
"required": [
"ticker"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30
},
"ticker": {
"type": "string",
"title": "Ticker"
}
}
}Return the most recent FinBERT-scored news headlines for `ticker`. Each headline has a `sentiment_score` in [-1, +1] (positive_prob - negative_prob), a categorical `sentiment_label`, and a `source_kind` (news / reddit / stocktwits / x / youtube). Costs 1 API credit per 25 headlines actually returned — same billing as GET /v1/sentiment/{ticker}. An empty result costs nothing. `limit` is capped at 100. Social posts are kept separate from news: the default `sources="news"` returns editorial news, `"social"` returns only Reddit, StockTwits and X posts, and `"all"` returns both, labelled by `source_kind`. Titles come back reverse-chronological so the first item is the freshest.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| ticker* | string | |
| sources | string |
{
"type": "object",
"title": "get_sentimentArguments",
"required": [
"ticker"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 25
},
"ticker": {
"type": "string",
"title": "Ticker"
},
"sources": {
"enum": [
"news",
"social",
"all"
],
"type": "string",
"title": "Sources",
"default": "news"
}
}
}Return daily aggregated news sentiment for `ticker` over the last `days`. Each entry has `avg_sentiment` (unweighted mean of that day's scores), `article_count`, and a directional `label` (positive / negative / neutral, thresholded at ±0.1). `sources="social"` returns a separate daily average of Reddit, StockTwits and X posts; news and social are never averaged together. Costs 1 API credit per day actually returned — same as GET /v1/summary/{ticker}. A window with no coverage costs nothing.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| ticker* | string | |
| sources | string |
{
"type": "object",
"title": "get_summaryArguments",
"required": [
"ticker"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30
},
"ticker": {
"type": "string",
"title": "Ticker"
},
"sources": {
"enum": [
"news",
"social"
],
"type": "string",
"title": "Sources",
"default": "news"
}
}
}Introspect your API key: included allowance, remaining credits, and when they refill. Free keys get 1,000 calls per 30-day window starting at their first billable call (`resets_at` is null when no window is running); paid plans refill on the 1st of each month. Free — doesn't hit the billing meter. Useful before a large batch of `get_sentiment`/`get_summary` calls to check you have credit headroom.
No arguments.
{
"type": "object",
"title": "get_usageArguments",
"properties": {}
}List every asset SentimentFX tracks. Cheap (free — doesn't hit the billing meter). Returns two groups: `primary` (5 crypto + 7 FX pairs — the ones with full sentiment coverage across the primary RSS feeds), and `background` (US equities, ETFs, commodity futures — coverage is thinner but real). Use the exact ticker string from either group as the `ticker` arg to the other tools.
No arguments.
{
"type": "object",
"title": "list_tickersArguments",
"properties": {}
}