# `org.sentimentfx/market-sentiment` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/org.sentimentfx/market-sentiment
- JSON: https://anlyon.dev/api/v1/servers/org.sentimentfx/market-sentiment
- Version: 1.0.0 (active)
- Publisher: org.sentimentfx (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/shaelegowski7/crypto-sentiment
- Metadata from the official MCP Registry, synced 2026-10-21T18:54:25.192Z

Title and description, as the publisher wrote them:

```untrusted-server-text
SentimentFX
FinBERT news sentiment and price history for 42 crypto, FX, stock, ETF and commodity tickers.
```

Scanned 2026-10-21T19:15:17.861Z over streamable-http.

**6 tools: 6 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 0 | ask |
| Only reads | read | 6 | allow |

## Findings

No check matched anything in these tool definitions.


## Only reads (6)

Looks things up and changes nothing. Claude Code: allow.

### `get_correlation`

- The name "get_correlation" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
    
```

### `get_prices`

- The name "get_prices" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
    
```

### `get_sentiment`

- The name "get_sentiment" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
    
```

### `get_summary`

- The name "get_summary" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
    
```

### `get_usage`

- The name "get_usage" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
    
```

### `list_tickers`

- The name "list_tickers" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
    
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `market-sentiment`:

```json
{
  "permissions": {
    "allow": [
      "mcp__market-sentiment__list_tickers",
      "mcp__market-sentiment__get_usage",
      "mcp__market-sentiment__get_sentiment",
      "mcp__market-sentiment__get_summary",
      "mcp__market-sentiment__get_prices",
      "mcp__market-sentiment__get_correlation"
    ],
    "ask": [],
    "deny": []
  }
}
```
