Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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
.claude/skills/himself65-fintel-data/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 95% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 51% | 0% |
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.
The skill resolves FINTEL_API_KEY in this order:
FINTEL_API_KEY environment variableFINTEL_API_KEY in .env in the current directoryFINTEL_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:
KEY_FROM_ENV_VAR — use $FINTEL_API_KEY directly in curl calls.KEY_FROM_LOCAL_DOTENV:<path> / KEY_FROM_ROOT_DOTENV:<path> — load once before calling:bash export FINTEL_API_KEY=$(grep -E "^FINTEL_API_KEY=" <path> | head -1 | cut -d= -f2- | sed 's/^["'\'']//;s/["'\'']$//')
KEY_NOT_SET — ask the user for their key. Keys come with a Fintel APIplan (fintel.io, docs at api.fintel.io/docs). They can either export FINTEL_API_KEY="..." or add FINTEL_API_KEY=... to .env at the repo root (preferred for worktrees).
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:
bash# 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"
| 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.
bashcurl -s -H "X-API-KEY: $FINTEL_API_KEY" \ "https://api.fintel.io/v1/securities/us/AAPL/short-volume" | python3 -m json.tool
meta object (warnings,freshness, status). Surface meta.warnings to the user when present.
{"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).
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):
bashclaude 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).
decimals, share counts with commas or abbreviations (2.3M, 1.1B).
cover, borrow fee trend direction. High borrow fee + falling shares available is the classic squeeze setup; present the data, not a prediction.
Distinguish buys from sells and option exercises in Form 4 data.
3/4/5, NYSE/NASDAQ short reports) when relevant.
squeeze call — present facts and let the user draw conclusions.
references/api-reference.md — full REST endpoint reference: all GETendpoints with parameters, defaults, limits, error semantics, MCP tool name mapping, and curl examples.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 3,740 | 3,529 | -6% | 1 | 1 | 0% | 679 | 3,060 | +351% | 0 | 0 | — |
case-01 | fail→fail | 9,487 | 6,031 | -36% | 1 | 1 | 0% | 1,368 | 2,847 | +108% | 0 | 0 | — |
case-02 | fail→fail | 6,995 | 6,182 | -12% | 1 | 1 | 0% | 1,151 | 2,749 | +139% | 0 | 0 | — |
case-03 | fail→fail | 12,095 | 6,800 | -44% | 1 | 1 | 0% | 1,935 | 2,779 | +44% | 0 | 0 | — |
case-05 | pass→fail | 4,446 | 3,153 | -29% | 1 | 1 | 0% | 689 | 3,016 | +338% | 0 | 0 | — |
case-06 | pass→fail | 10,899 | 9,238 | -15% | 1 | 1 | 0% | 1,962 | 3,035 | +55% | 0 | 0 | — |
case-07 | fail→pass | 11,840 | 3,489 | -71% | 1 | 1 | 0% | 2,283 | 3,136 | +37% | 0 | 0 | — |
case-08 | fail→pass | 7,176 | 2,562 | -64% | 1 | 1 | 0% | 1,500 | 2,930 | +95% | 0 | 0 | — |
case-13 | fail→pass | 10,401 | 4,073 | -61% | 1 | 1 | 0% | 1,959 | 3,307 | +69% | 0 | 0 | — |
case-09 | fail→pass | 9,786 | 3,468 | -65% | 1 | 1 | 0% | 1,922 | 3,072 | +60% | 0 | 0 | — |
case-10 | pass→pass | 11,781 | 5,342 | -55% | 1 | 1 | 0% | 2,355 | 3,616 | +54% | 0 | 0 | — |
case-11 | pass→pass | 11,755 | 5,522 | -53% | 1 | 1 | 0% | 1,985 | 3,403 | +71% | 0 | 0 | — |
case-12 | pass→pass | 10,163 | 4,275 | -58% | 1 | 1 | 0% | 2,046 | 3,236 | +58% | 0 | 0 | — |
case-14 | fail→fail | 9,418 | 3,485 | -63% | 1 | 1 | 0% | 1,990 | 2,900 | +46% | 0 | 0 | — |
case-15 | fail→pass | 9,053 | 3,136 | -65% | 1 | 1 | 0% | 2,065 | 3,128 | +51% | 0 | 0 | — |
case-16 | fail→pass | 10,056 | 18,536 | +84% | 1 | 1 | 0% | 1,989 | 6,990 | +251% | 0 | 0 | — |
case-17 | pass→pass | 10,489 | 4,981 | -53% | 1 | 1 | 0% | 1,915 | 3,464 | +81% | 0 | 0 | — |
case-18 | fail→pass | 5,619 | 2,014 | -64% | 1 | 1 | 0% | 1,126 | 2,798 | +148% | 0 | 0 | — |
case-19 | fail→pass | 5,304 | 2,356 | -56% | 1 | 1 | 0% | 1,059 | 2,863 | +170% | 0 | 0 | — |
case-20 | fail→pass | 11,642 | 2,361 | -80% | 1 | 1 | 0% | 2,128 | 2,931 | +38% | 0 | 0 | — |
case-21 | pass→pass | 8,802 | 2,131 | -76% | 1 | 1 | 0% | 1,633 | 2,785 | +71% | 0 | 0 | — |
case-22 | pass→pass | 6,548 | 3,924 | -40% | 1 | 1 | 0% | 1,262 | 3,238 | +157% | 0 | 0 | — |
case-23 | fail→pass | 6,911 | 2,347 | -66% | 1 | 1 | 0% | 1,418 | 2,909 | +105% | 0 | 0 | — |
case-24 | fail→pass | 12,597 | 3,100 | -75% | 1 | 1 | 0% | 2,630 | 2,798 | +6% | 0 | 0 | — |
case-25 | fail→pass | 11,860 | 3,325 | -72% | 1 | 1 | 0% | 2,224 | 3,112 | +40% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 21 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +40 percentage points is the difference between those two pass rates over the 21 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.