Fintel Data Skill
Fintel (fintel.io) is an institutional-grade market
intelligence platform.
Its strongest datasets are the ones most other providers lack: short
interest, borrow rates, short volume, fails-to-deliver, 13F institutional
ownership, and insider transactions.
Fintel exposes two surfaces backed by the same data contract:
| Surface |
Endpoint |
Auth |
Best for |
| REST |
https://api.fintel.io/v1/* |
X-API-KEY header |
Default — curl from any CLI agent |
| MCP |
https://mcp.fintel.io/mcp |
X-API-KEY header |
MCP-native clients, tool auto-discovery |
Both require a Fintel API key. This skill is READ-ONLY — only call
GET endpoints. The API also exposes write endpoints (create/delete stock
lists, alert subscriptions, teams); do not call them.
Step 1: Resolve FINTEL_API_KEY
The skill resolves FINTEL_API_KEY in this order:
FINTEL_API_KEY environment variable
FINTEL_API_KEY in .env in the current directory
FINTEL_API_KEY in .env at the git repo root (so a worktree inherits the key from the main checkout)
!`if [ -n "$FINTEL_API_KEY" ]; then echo "KEY_FROM_ENV_VAR"; elif [ -f .env ] && grep -qE "^FINTEL_API_KEY=" .env; then echo "KEY_FROM_LOCAL_DOTENV:$(pwd)/.env"; else GIT_COMMON=$(git rev-parse --path-format=absolute --git-common-dir 2>/dev/null); if [ -n "$GIT_COMMON" ]; then ROOT=$(dirname "$GIT_COMMON"); if [ -f "$ROOT/.env" ] && grep -qE "^FINTEL_API_KEY=" "$ROOT/.env"; then echo "KEY_FROM_ROOT_DOTENV:$ROOT/.env"; else echo "KEY_NOT_SET"; fi; else echo "KEY_NOT_SET"; fi; fi`
Then act on the result:
Step 2: Resolve the Security
Most endpoints are addressed by {country}/{symbol} — an ISO country
code plus ticker, e.g. us/AAPL. Default to us when the user gives
only a ticker.
If the ticker is ambiguous or the user gives a company name, CUSIP,
ISIN, or FIGI, resolve it first:
# name / ticker / CUSIP / ISIN / FIGI search
curl -s -H "X-API-KEY: $FINTEL_API_KEY" "https://api.fintel.io/v1/securities?query=apple&country=us"
# exact identifier lookup (type: cusip, isin, ticker, id)
curl -s -H "X-API-KEY: $FINTEL_API_KEY" "https://api.fintel.io/v1/identifiers/isin/US0378331005"
Step 3: Match the Request to an Endpoint
| User wants |
Endpoint |
Notes |
| Short interest, days to cover |
/v1/securities/{country}/{symbol}/short-interest |
Trailing year, NYSE/NASDAQ-reported. Limited availability — must be enabled per account; 403 means not entitled |
| Borrow rate, cost to borrow, shares available |
/v1/securities/{country}/{symbol}/borrow-rate |
Latest securities-lending fee rate, rebate rate, shares available |
| Daily short volume |
/v1/securities/{country}/{symbol}/short-volume |
Trailing year: short, short-exempt, total volume |
| Fails-to-deliver / FTD |
/v1/securities/{country}/{symbol}/fails-to-deliver |
Trailing-year SEC FTD records (US only) |
| Institutional owners / 13F holders |
/v1/securities/{country}/{symbol}/owners |
Current SEC 13F-derived holders |
| Insider transactions / Form 4 |
/v1/securities/{country}/{symbol}/insiders |
SEC Form 3/4/5-derived; count param |
| Analyst price targets |
/v1/securities/{country}/{symbol}/price-targets |
High, low, mean, median |
| Analyst buy/hold/sell ratings |
/v1/securities/{country}/{symbol}/analyst-ratings |
Aggregated recommendations |
| Revenue / EPS forecasts |
/v1/securities/{country}/{symbol}/forecast |
Aggregated analyst estimates |
| EOD price history |
/v1/securities/{country}/{symbol}/eod |
period: 1m, 3m, 6m, 1y (default), 2y, 3y, 5y, all |
| Latest price + derived stats |
/v1/securities/{country}/{symbol}/last-price |
52w high/low, WTD/MTD/YTD change; falls back to EOD close with meta.warnings=["quote_stale"] |
| Dividend history |
/v1/securities/{country}/{symbol}/dividends |
|
| Earnings history and surprises |
/v1/securities/{country}/{symbol}/earnings |
|
| Upcoming earnings (one stock / market-wide) |
/v1/securities/{country}/{symbol}/calendar/earnings or /v1/calendar/earnings |
from/to ISO dates, default today +7d, max 90d window |
| Upcoming dividends (one stock / market-wide) |
/v1/securities/{country}/{symbol}/calendar/dividends or /v1/calendar/dividends |
Same window rules |
| A specific fundamental metric |
/v1/securities/{country}/{symbol}/data-points/{key} |
Discover keys via /v1/data-definitions?query=... |
| Top/bottom ranked stocks |
/v1/leaderboards then /v1/leaderboards/{key}/entries |
503 not_available means retry later; meta.status="beta" means stub data |
| Security profile, listings, identifier history |
/v1/securities/{country}/{symbol} |
|
| User's watchlists |
/v1/stock-lists, /v1/stock-lists/{id}/items |
Also /insiders, /owners, /filings per list |
| User's alerts |
/v1/alerts, /v1/alert-messages |
|
| Account / entitlements |
/v1/account |
|
Full parameter details, country/exchange discovery endpoints, and more
curl examples: read references/api-reference.md.
Step 4: Call the API
curl -s -H "X-API-KEY: $FINTEL_API_KEY" \
"https://api.fintel.io/v1/securities/us/AAPL/short-volume" | python3 -m json.tool
- Success responses are JSON; some carry a
meta object (warnings,
freshness, status). Surface meta.warnings to the user when present.
- Errors return
{"error": {"code": "...", "message": "..."}} — e.g.
unauthorized (bad/missing key), 403 (dataset not enabled for the
account, common for short-interest), 503 not_available (ranking
service down — retry later, don't treat as empty data).
- Usage is metered per account — batch thoughtfully; don't poll.
Step 5: MCP Alternative (Optional)
For MCP-native setups, the same tools are discoverable from the official
server (tool names like fintel.get_short_interest,
fintel.get_security_owners — REST parity, same entitlements):
claude mcp add --transport http fintel https://mcp.fintel.io/mcp --header "X-API-KEY: your_key_here"
Prefer REST via curl when shell access is available — it needs no setup
beyond the key. Use MCP when the user explicitly asks for it or shell
access is restricted (note: neither works on Claude.ai's sandbox).
Step 6: Respond to the User
- Format numbers cleanly: prices to 2 decimals, percentages to 1-2
decimals, share counts with commas or abbreviations (2.3M, 1.1B).
- For short data: contextualize — short interest as % of float, days to
cover, borrow fee trend direction. High borrow fee + falling shares
available is the classic squeeze setup; present the data, not a
prediction.
- For ownership/insiders: use tables (holder, shares, change, date).
Distinguish buys from sells and option exercises in Form 4 data.
- Note the data source: "Fintel" with dataset provenance (SEC 13F, Form
3/4/5, NYSE/NASDAQ short reports) when relevant.
- Never turn the data into a trading recommendation, price target, or
squeeze call — present facts and let the user draw conclusions.
Reference Files
references/api-reference.md — full REST endpoint reference: all GET
endpoints with parameters, defaults, limits, error semantics, MCP tool
name mapping, and curl examples.
1---2name: fintel-data3description: Query Fintel (fintel.io) institutional market intelligence via the REST API at https://api.fintel.io/v1 with FINTEL_API_KEY (X-API-KEY header), or the official MCP server at https://mcp.fintel.io/mcp. Read-only data: short interest, borrow rate/fee and shares available to borrow, daily short volume, fails-to-deliver (FTD), institutional ownership from SEC 13F filings, insider transactions from SEC Form 3/4/5, analyst price targets, ratings and forecasts, dividends and earnings history, earnings and dividend calendars, EOD price bars, last trade price, security master lookup by ticker/CUSIP/ISIN/FIGI, leaderboards, watchlists and alerts. Triggers: "fintel", "fintel.io", short interest, short squeeze data, borrow rate, cost to borrow, shares available to borrow, FTD, fails to deliver, short volume, 13F holders, institutional owners, who owns X, insider buying, insider selling, Form 4 transactions, analyst price target, days to cover, short interest ratio.4---5
6# Fintel Data Skill
7
8Fintel ([fintel.io](https://fintel.io)) is an institutional-grade market
9intelligence platform.
10Its strongest datasets are the ones most other providers lack: **short
11interest, borrow rates, short volume, fails-to-deliver, 13F institutional
12ownership, and insider transactions**.
13
14Fintel exposes two surfaces backed by the same data contract:
15
16| Surface | Endpoint | Auth | Best for |
17|---|---|---|---|
18| **REST** | `https://api.fintel.io/v1/*` | `X-API-KEY` header | Default — curl from any CLI agent |
19| **MCP** | `https://mcp.fintel.io/mcp` | `X-API-KEY` header | MCP-native clients, tool auto-discovery |
20
21Both require a Fintel API key. **This skill is READ-ONLY** — only call
22GET endpoints. The API also exposes write endpoints (create/delete stock
23lists, alert subscriptions, teams); do not call them.
24
25---
26
27## Step 1: Resolve FINTEL_API_KEY
28
29The skill resolves `FINTEL_API_KEY` in this order:
301. `FINTEL_API_KEY` environment variable
312. `FINTEL_API_KEY` in `.env` in the current directory
323. `FINTEL_API_KEY` in `.env` at the git repo root (so a worktree inherits the key from the main checkout)
33
34```
35!`if [ -n "$FINTEL_API_KEY" ]; then echo "KEY_FROM_ENV_VAR"; elif [ -f .env ] && grep -qE "^FINTEL_API_KEY=" .env; then echo "KEY_FROM_LOCAL_DOTENV:$(pwd)/.env"; else GIT_COMMON=$(git rev-parse --path-format=absolute --git-common-dir 2>/dev/null); if [ -n "$GIT_COMMON" ]; then ROOT=$(dirname "$GIT_COMMON"); if [ -f "$ROOT/.env" ] && grep -qE "^FINTEL_API_KEY=" "$ROOT/.env"; then echo "KEY_FROM_ROOT_DOTENV:$ROOT/.env"; else echo "KEY_NOT_SET"; fi; else echo "KEY_NOT_SET"; fi; fi`
36```
37
38Then act on the result:
39
40- `KEY_FROM_ENV_VAR` — use `$FINTEL_API_KEY` directly in curl calls.
41- `KEY_FROM_LOCAL_DOTENV:<path>` / `KEY_FROM_ROOT_DOTENV:<path>` — load once before calling:
42 ```bash
43 export FINTEL_API_KEY=$(grep -E "^FINTEL_API_KEY=" <path> | head -1 | cut -d= -f2- | sed 's/^["''']//;s/["''']$//')
44 ```
45- `KEY_NOT_SET` — ask the user for their key. Keys come with a Fintel API
46 plan ([fintel.io](https://fintel.io), docs at
47 [api.fintel.io/docs](https://api.fintel.io/docs)). They can either
48 `export FINTEL_API_KEY="..."` or add `FINTEL_API_KEY=...` to `.env` at
49 the repo root (preferred for worktrees).
50
51---
52
53## Step 2: Resolve the Security
54
55Most endpoints are addressed by `{country}/{symbol}` — an ISO country
56code plus ticker, e.g. `us/AAPL`. Default to `us` when the user gives
57only a ticker.
58
59If the ticker is ambiguous or the user gives a company name, CUSIP,
60ISIN, or FIGI, resolve it first:
61
62```bash
63# name / ticker / CUSIP / ISIN / FIGI search
64curl -s -H "X-API-KEY: $FINTEL_API_KEY" "https://api.fintel.io/v1/securities?query=apple&country=us"
65# exact identifier lookup (type: cusip, isin, ticker, id)
66curl -s -H "X-API-KEY: $FINTEL_API_KEY" "https://api.fintel.io/v1/identifiers/isin/US0378331005"
67```
68
69---
70
71## Step 3: Match the Request to an Endpoint
72
73| User wants | Endpoint | Notes |
74|---|---|---|
75| Short interest, days to cover | `/v1/securities/{country}/{symbol}/short-interest` | Trailing year, NYSE/NASDAQ-reported. Limited availability — must be enabled per account; 403 means not entitled |
76| Borrow rate, cost to borrow, shares available | `/v1/securities/{country}/{symbol}/borrow-rate` | Latest securities-lending fee rate, rebate rate, shares available |
77| Daily short volume | `/v1/securities/{country}/{symbol}/short-volume` | Trailing year: short, short-exempt, total volume |
78| Fails-to-deliver / FTD | `/v1/securities/{country}/{symbol}/fails-to-deliver` | Trailing-year SEC FTD records (US only) |
79| Institutional owners / 13F holders | `/v1/securities/{country}/{symbol}/owners` | Current SEC 13F-derived holders |
80| Insider transactions / Form 4 | `/v1/securities/{country}/{symbol}/insiders` | SEC Form 3/4/5-derived; `count` param |
81| Analyst price targets | `/v1/securities/{country}/{symbol}/price-targets` | High, low, mean, median |
82| Analyst buy/hold/sell ratings | `/v1/securities/{country}/{symbol}/analyst-ratings` | Aggregated recommendations |
83| Revenue / EPS forecasts | `/v1/securities/{country}/{symbol}/forecast` | Aggregated analyst estimates |
84| EOD price history | `/v1/securities/{country}/{symbol}/eod` | `period`: 1m, 3m, 6m, 1y (default), 2y, 3y, 5y, all |
85| Latest price + derived stats | `/v1/securities/{country}/{symbol}/last-price` | 52w high/low, WTD/MTD/YTD change; falls back to EOD close with `meta.warnings=["quote_stale"]` |
86| Dividend history | `/v1/securities/{country}/{symbol}/dividends` | |
87| Earnings history and surprises | `/v1/securities/{country}/{symbol}/earnings` | |
88| Upcoming earnings (one stock / market-wide) | `/v1/securities/{country}/{symbol}/calendar/earnings` or `/v1/calendar/earnings` | `from`/`to` ISO dates, default today +7d, max 90d window |
89| Upcoming dividends (one stock / market-wide) | `/v1/securities/{country}/{symbol}/calendar/dividends` or `/v1/calendar/dividends` | Same window rules |
90| A specific fundamental metric | `/v1/securities/{country}/{symbol}/data-points/{key}` | Discover keys via `/v1/data-definitions?query=...` |
91| Top/bottom ranked stocks | `/v1/leaderboards` then `/v1/leaderboards/{key}/entries` | 503 not_available means retry later; `meta.status="beta"` means stub data |
92| Security profile, listings, identifier history | `/v1/securities/{country}/{symbol}` | |
93| User's watchlists | `/v1/stock-lists`, `/v1/stock-lists/{id}/items` | Also `/insiders`, `/owners`, `/filings` per list |
94| User's alerts | `/v1/alerts`, `/v1/alert-messages` | |
95| Account / entitlements | `/v1/account` | |
96
97Full parameter details, country/exchange discovery endpoints, and more
98curl examples: read `references/api-reference.md`.
99
100---
101
102## Step 4: Call the API
103
104```bash
105curl -s -H "X-API-KEY: $FINTEL_API_KEY" \
106 "https://api.fintel.io/v1/securities/us/AAPL/short-volume" | python3 -m json.tool
107```
108
109- Success responses are JSON; some carry a `meta` object (warnings,
110 freshness, status). Surface `meta.warnings` to the user when present.
111- Errors return `{"error": {"code": "...", "message": "..."}}` — e.g.
112 `unauthorized` (bad/missing key), `403` (dataset not enabled for the
113 account, common for short-interest), `503 not_available` (ranking
114 service down — retry later, don't treat as empty data).
115- Usage is metered per account — batch thoughtfully; don't poll.
116
117---
118
119## Step 5: MCP Alternative (Optional)
120
121For MCP-native setups, the same tools are discoverable from the official
122server (tool names like `fintel.get_short_interest`,
123`fintel.get_security_owners` — REST parity, same entitlements):
124
125```bash
126claude mcp add --transport http fintel https://mcp.fintel.io/mcp --header "X-API-KEY: your_key_here"
127```
128
129Prefer REST via curl when shell access is available — it needs no setup
130beyond the key. Use MCP when the user explicitly asks for it or shell
131access is restricted (note: neither works on Claude.ai's sandbox).
132
133---
134
135## Step 6: Respond to the User
136
137- Format numbers cleanly: prices to 2 decimals, percentages to 1-2
138 decimals, share counts with commas or abbreviations (2.3M, 1.1B).
139- For short data: contextualize — short interest as % of float, days to
140 cover, borrow fee trend direction. High borrow fee + falling shares
141 available is the classic squeeze setup; present the data, not a
142 prediction.
143- For ownership/insiders: use tables (holder, shares, change, date).
144 Distinguish buys from sells and option exercises in Form 4 data.
145- Note the data source: "Fintel" with dataset provenance (SEC 13F, Form
146 3/4/5, NYSE/NASDAQ short reports) when relevant.
147- Never turn the data into a trading recommendation, price target, or
148 squeeze call — present facts and let the user draw conclusions.
149
150---
151
152## Reference Files
153
154- `references/api-reference.md` — full REST endpoint reference: all GET
155 endpoints with parameters, defaults, limits, error semantics, MCP tool
156 name mapping, and curl examples.