Install
openclaw skills install @daniel3303/equiblesUS stock market data from Equibles: SEC filing search with exact lines, XBRL financial statements, earnings call transcripts, insider trades, 13F holders, congressional trades and daily prices. Use when the user asks what a filing or earnings call says, wants statement figures, or asks who bought or sold a stock.
openclaw skills install @daniel3303/equiblesEquibles 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 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 uses the REST API with curl.
eq_.EQUIBLES_API_KEY (for OpenClaw, skills.entries.equibles.apiKey). Send it only as Authorization: Bearer $EQUIBLES_API_KEY; never put it in a URL or print it.https://api.equibles.com/v1. OpenAPI spec: https://api.equibles.com/openapi/v1.json. Reference: https://equibles.com/docs/api."code": "unauthorized" means the key is missing or wrong, not that the data is missing. A 429 means the daily allowance is used up; it resets at 00:00 UTC.data plus meta (limit, offset, count, hasMore). Errors share one shape: {"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=$START&endLine=$((START + 60))" \
| jq -r '.lines[] | "\(.number): \(.text)"'
Start at the excerpt's startLineNumber and read at most 500 lines per request. Quote from these lines, and cite the filing type, filedDate and url.
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, periodEnd, form, filedDate}]}'
The 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.
curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/congress/trades?ticker=NVDA&limit=10" \
| jq '.data[]'
Members disclose amounts as value bands, not exact figures, and file up to 45 days after the trade.
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.
curl -s -H "Authorization: Bearer $EQUIBLES_API_KEY" \
"https://api.equibles.com/v1/stocks/AAPL/prices?startDate=2026-10-01&limit=100" \
| jq '.data[] | {date, close, volume}'
If the agent runtime supports remote MCP servers, Equibles also runs one at https://mcp.equibles.com/mcp (Streamable HTTP, OAuth sign-in or the same Bearer key), listed in the official MCP registry as io.github.daniel3303/equibles. It has 130 tools: 120 read market data, and 10 write to the signed-in user's own portfolios, watchlist or feedback. Call those 10 only when the user asks for that change, and confirm deletions first. Setup guides: https://equibles.com/docs/mcp.
filedDate and url with each quote, and periodEnd with each number.api.equibles.com that changes nothing in the account; this skill writes nothing locally.