技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
equibles【数据与研究】Query Equibles for US stock market data: SEC filing search, XBRL financial statements, earnings call transcripts, insider and 13F holdings, and daily prices.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Equibles serves data on US-listed companies from SEC filings, company releases and earnings calls: full-text search over 10-K, 10-Q, 8-K and other filings, XBRL financial statements, earnings call transcripts, Form 4 insider transactions, 13F institutional holdings, congressional trades, short interest and end-of-day prices. Search results and statement lines carry the filing date and document they came from, so answers can cite their source.
The same data is available through a hosted MCP server and a JSON REST API. This skill covers both: when to use which, the filing search and read workflow, statements, insider and 13F data, transcripts, and the plan limits.
https://mcp.equibles.com/mcp (Streamable HTTP), listed in the official MCP registry as io.github.daniel3303/equibles.claude mcp add --transport http equibles https://mcp.equibles.com/mcp, then run /mcp and choose Authenticate.SearchDocuments, GetFinancialStatement, GetInsiderTransactions, GetTopHolders, GetEarningsCallTranscript) over raw HTTP calls.https://api.equibles.com/v1. OpenAPI spec: https://api.equibles.com/openapi/v1.json.eq_). Read it from the EQUIBLES_API_KEY environment variable and send it as Authorization: Bearer $EQUIBLES_API_KEY. Never put the key in the URL or print it."code": "unauthorized". That means a key is needed, not that the data is missing.yyyy-MM-dd dates. Paged endpoints return data plus meta (limit, offset, count, hasMore).{"error": {"code", "message", "status"}}.curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/stocks/AAPL/filings/search?query=tariffs&documentType=TenK&limit=3" \
| jq '.data[] | {documentId, documentTypeName, filedDate, startLineNumber, url, text}'
Use /v1/filings/search?query=... (no ticker in the path) to search every company. Each excerpt carries a documentId and the line where it starts.
curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/filings/$DOCUMENT_ID/lines?startLine=698&endLine=764" \
| jq -r '.lines[] | "\(.number): \(.text)"'
Start at the excerpt's startLineNumber (Apple's tariff risk factor sat at line 698 of its 2025 10-K) and read at most 500 lines per request. Quote from these lines, and cite the filing type and filedDate.
curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/stocks/MSFT/financial-statements/income?year=2025&period=FY" \
| jq '{companyName, fiscalYear, fiscalPeriod, rows: [.data[] | {lineItem, value, unit, periodStart, periodEnd, form, filedDate}]}'
statement is income, balance or cashflow; period is FY or Q1 to Q4. Fiscal years follow the company's own calendar (Microsoft's fiscal 2025 ended in June 2025), so state periodEnd with every figure.
curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/stocks/INTC/insider-transactions?startDate=2026-01-01&limit=100" \
| jq '[.data[] | select(.isOpenMarketTrade) | {transactionDate, insiderName, role, transactionType, shares, pricePerShare, value}]'
Filter on isOpenMarketTrade. transactionType also labels conversions, tax withholding and expirations as Buy or Sell, and those are not conviction trades.
curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/stocks/NVDA/institutional-holders?limit=10" \
| jq '{reportDate: .meta.reportDate, holders: [.data[] | {name, shares, value, percentOfTotal}]}'
percentOfTotal is the share of all reported 13F shares, not of shares outstanding. Always state reportDate; 13F filings land up to 45 days after the quarter ends.
EVENT=$(curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/stocks/NVDA/earnings-calls/2026/2")
echo "$EVENT" | jq '{title, callDate, hasTranscript, transcriptDocumentId}'
DOC=$(echo "$EVENT" | jq -r '.transcriptDocumentId')
curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/filings/$DOC/lines?startLine=1&endLine=200" \
| jq -r '.lines[] | .text'
The path takes the company's fiscal year and quarter, not the calendar quarter.
import os
import requests
BASE_URL = "https://api.equibles.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['EQUIBLES_API_KEY']}"}
def equibles_get(path, **params):
resp = requests.get(f"{BASE_URL}{path}", params=params, headers=HEADERS, timeout=30)
if resp.status_code == 429:
raise RuntimeError("Daily request allowance used up; it resets at 00:00 UTC.")
resp.raise_for_status()
return resp.json()
def equibles_get_all(path, page_size=100, **params):
rows, offset = [], 0
while True:
body = equibles_get(path, limit=page_size, offset=offset, **params)
rows += body["data"]
if not body["meta"]["hasMore"]:
return rows
offset += page_size
prices = equibles_get_all("/stocks/AAPL/prices", startDate="2026-01-01")
for bar in prices[:5]:
print(bar["date"], bar["close"], bar["volume"])
Each page is one request against the daily allowance, so keep limit high and the date range narrow.
filedDate and url with each quote, and periodEnd with each number.Authorization header, read from EQUIBLES_API_KEY./stocks/{ticker}/prices returns US dollars.api.equibles.com. Nothing is written locally.reportDate returns 400.
Solution: The date must be one of the stock's 13F report dates; omit it for the latest quarter.period=FY for the year.@fxmacrodata - Official macro releases and FX rates across 22 currencies.@alpha-vantage - Global equities, forex, crypto and technical indicators.