io. github. SharpLu/ ko-mcp
by SharpLu · remote · no sign-in to list tools · v1.0.0 · published by GitHub user SharpLu
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
32 tools: 32 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads32Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http ko https://mcp.ko.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
32 tools
Only reads 32Claude Code: allow
get_congress_memberGet detailed trading history of a specific U.S.No findings
Why it is in this group
- The name "get_congress_member" says "get": a word for reading.
Description, as the server wrote it Get detailed trading history of a specific U.S. Congress member. Shows individual trades with transaction types, amounts, and disclosure dates.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_congress_tradesSearch individual stock trades disclosed by U.S.No findings
Why it is in this group
- The name "get_congress_trades" says "get": a word for reading.
Description, as the server wrote it Search individual stock trades disclosed by U.S. Congress members (House and Senate) under the STOCK Act. Returns a markdown table of transactions: member name, chamber, ticker, buy/sell type, transaction date, disclosure date (the gap between the two reveals reporting delay), dollar amount range, and owner (self/spouse/joint). Use for questions like 'What did Nancy Pelosi trade recently?', 'Which members bought NVDA?', or 'Show the largest Senate trades this quarter'. Filter by chamber, ticker, or member name; sort by traded value, trade count, or recency. For one member's profile and complete trading history, use get_congress_member instead.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_crypto_exposureGet a market-wide summary of institutional exposure to US spot crypto ETFs (Bitcoin ETF complex: IBIT, FBTC, GBTC, etc.) from the latest quarter of SEC 13F filings.No findings
Why it is in this group
- The name "get_crypto_exposure" says "get": a word for reading.
Description, as the server wrote it Get a market-wide summary of institutional exposure to US spot crypto ETFs (Bitcoin ETF complex: IBIT, FBTC, GBTC, etc.) from the latest quarter of SEC 13F filings. Returns total institutional USD held, quarter-over-quarter change, and a per-ETF breakdown (holders, USD, QoQ).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_crypto_holderGet one institution's spot crypto-ETF holdings (Bitcoin ETF complex): its per-ETF positions in the latest filed quarter (shares, USD, QoQ change, action) plus its rank among all cr…No findings
Why it is in this group
- The name "get_crypto_holder" says "get": a word for reading.
Description, as the server wrote it Get one institution's spot crypto-ETF holdings (Bitcoin ETF complex): its per-ETF positions in the latest filed quarter (shares, USD, QoQ change, action) plus its rank among all crypto-ETF holders. Use a CIK number (find it with get_crypto_holders or the search tool).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_crypto_holdersList institutional investors holding US spot crypto ETFs (Bitcoin ETF complex), ranked by total USD held, from the latest quarter of SEC 13F filings.No findings
Why it is in this group
- The name "get_crypto_holders" says "get": a word for reading.
Description, as the server wrote it List institutional investors holding US spot crypto ETFs (Bitcoin ETF complex), ranked by total USD held, from the latest quarter of SEC 13F filings. Optionally filter to holders of a specific ETF via the `product` parameter (e.g. 'IBIT').
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_economic_indicatorsGet U.S.No findings
Why it is in this group
- The name "get_economic_indicators" says "get": a word for reading.
Description, as the server wrote it Get U.S. economic indicators from BLS — CPI (inflation), PPI (producer prices), Non-farm Payrolls (employment), Unemployment Rate, JOLTS. Filter by category.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_eu_annual_reportsEuropean annual financial report filings for Sweden, Netherlands, Denmark or the UK, newest first: issuer, LEI, period end, link to the original report where the source allows, per…No findings
Why it is in this group
- The name "get_eu_annual_reports" says "get": a word for reading.
Description, as the server wrote it European annual financial report filings for Sweden, Netherlands, Denmark or the UK, newest first: issuer, LEI, period end, link to the original report where the source allows, per-row source credit. Filter by issuer id; check get_eu_markets for which markets are live.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_eu_insider_dealingsEuropean insider dealings: transactions by managers and closely associated persons (PDMR, MAR article 19) from the national registers of Sweden, Netherlands, Denmark or the UK, new…No findings
Why it is in this group
- The name "get_eu_insider_dealings" says "get": a word for reading.
Description, as the server wrote it European insider dealings: transactions by managers and closely associated persons (PDMR, MAR article 19) from the national registers of Sweden, Netherlands, Denmark or the UK, newest first. One row per notice transaction line with person, role, nature, quantity, price and per-row source credit. Filter by issuer id; check get_eu_markets for which markets are live.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_eu_issuerOne European issuer in one market (se, nl, dk, uk): identity (name, LEI, ISIN, venue) and its newest rows of insider dealings, major holdings, net short positions and annual report…No findings
Why it is in this group
- The name "get_eu_issuer" says "get": a word for reading.
Description, as the server wrote it One European issuer in one market (se, nl, dk, uk): identity (name, LEI, ISIN, venue) and its newest rows of insider dealings, major holdings, net short positions and annual reports, each with source credit. Takes the issuer id from any get_eu_* row (issuer.id).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_eu_major_holdingsEuropean major holdings (voting-rights) notifications for Sweden, Netherlands, Denmark or the UK, newest first: issuer, holder(s), voting-rights % after (incl.No findings
Why it is in this group
- The name "get_eu_major_holdings" says "get": a word for reading.
Description, as the server wrote it European major holdings (voting-rights) notifications for Sweden, Netherlands, Denmark or the UK, newest first: issuer, holder(s), voting-rights % after (incl. instruments), shares %, reason, per-row source credit. Filter by issuer id; check get_eu_markets for which markets are live.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_eu_marketsWhich European markets and datasets ko.io serves: for Sweden, Netherlands, Denmark and the UK, the status of insider dealings (PDMR), major holdings, net short positions and annual…No findings
Why it is in this group
- The name "get_eu_markets" says "get": a word for reading.
Description, as the server wrote it Which European markets and datasets ko.io serves: for Sweden, Netherlands, Denmark and the UK, the status of insider dealings (PDMR), major holdings, net short positions and annual reports -- live (with latest source date), pending (not activated yet) or not offered. Call first when unsure whether an EU dataset is live.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_eu_short_positionsEuropean disclosed net short positions for Sweden, Netherlands or Denmark (not offered for the UK), newest position date first: holder, issuer, ISIN, net short % of issued capital,…No findings
Why it is in this group
- The name "get_eu_short_positions" says "get": a word for reading.
Description, as the server wrote it European disclosed net short positions for Sweden, Netherlands or Denmark (not offered for the UK), newest position date first: holder, issuer, ISIN, net short % of issued capital, per-row source credit. Filter by issuer id; check get_eu_markets for which markets are live.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_fed_ratesGet daily U.S.No findings
Why it is in this group
- The name "get_fed_rates" says "get": a word for reading.
Description, as the server wrote it Get daily U.S. policy and money-market interest rates as a markdown table: Effective Fed Funds Rate, SOFR, Prime Rate, and benchmark Treasury yields (3M, 2Y, 10Y, 30Y) per date, newest first. Use for monetary-policy questions like 'Where is the Fed funds rate now?' or 'How has SOFR moved this quarter?', or to compare policy rates against long-end yields for inversion analysis. Covers up to 10 years of daily history. For the full Treasury curve across all maturities, use get_treasury_yields instead.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_financial_stressGet the OFR Financial Stress Index — a daily indicator of stress in global financial markets.No findings
Why it is in this group
- The name "get_financial_stress" says "get": a word for reading.
Description, as the server wrote it Get the OFR Financial Stress Index — a daily indicator of stress in global financial markets. Values above 0 indicate above-average stress.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_form144_noticesGet SEC Form 144 filings — notices of proposed sale of restricted/controlled securities by insiders.No findings
Why it is in this group
- The name "get_form144_notices" says "get": a word for reading.
Description, as the server wrote it Get SEC Form 144 filings — notices of proposed sale of restricted/controlled securities by insiders. Filed before selling, these signal upcoming insider sales. Complements Form 4 (post-trade) with pre-trade intent.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_ftd_dataGet SEC fails-to-deliver (FTD) data for a stock.No findings
Why it is in this group
- The name "get_ftd_data" says "get": a word for reading.
Description, as the server wrote it Get SEC fails-to-deliver (FTD) data for a stock. Each quantity is the aggregate net BALANCE of shares that had failed to deliver and were still outstanding on that settlement date, as published by the SEC -- NOT the number of new fails that day. Balances carry over between days, so never sum quantities across dates (that counts the same unsettled shares repeatedly); compare levels or take the maximum instead. Fails arise from many causes (operational and processing delays, long sales, market-maker activity), and FTD data on its own is not evidence of naked short selling. Free/keyless access covers the trailing 92 days. structuredContent carries the exact share quantities.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_gov_contractsU.S.No findings
Why it is in this group
- The name "get_gov_contracts" says "get": a word for reading.
Description, as the server wrote it U.S. federal prime-contract obligations (USAspending, FY2015+) attributed to one issuer, across all share classes. Gross, signed deobligations, net, monthly series and agencies. include=actions adds actions; award_id returns only attributed actions on that award plus award context. Exact decimal strings. Recent months are provisional; Defense reports about 90 days late. Automatic exact matches cover companies listed today, plus reviewed links. No link does not mean no contracts. Free: trailing 92 days; history: Pro.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_insider_tradesGet insider (SEC Form 4) transactions for one company.No findings
Why it is in this group
- The name "get_insider_trades" says "get": a word for reading.
Description, as the server wrote it Get insider (SEC Form 4) transactions for one company. Two grains, and the answer says which: (1) with `executive_cik` -> one row per Form 4 transaction line, with its SEC code (P open-market or private purchase, S open-market or private sale, M/X/C option or RSU exercise/conversion, A grant/award, F shares withheld for tax, G gift, ...), shares, price and value; (2) without it -> one row per insider per trade date that AGGREGATES all that day's lines, split into code P/S purchases/sales (open market or private) versus all acquisitions/dispositions (which also count vests, exercises and tax withholding), with both dollar totals and the line count; when ko.io reports them, the Lines cell and structuredContent also carry that day's SEC codes (e.g. '4 (F 1, M 2, S 1)'). Do not read an aggregate day's total disposed value as a sale decision; use the P/S columns, whose dollar totals cover priced lines only (unpriced lines are counted and flagged as partial). Keyless/Free access covers the trailing 92 days; `period` beyond 1Q requires Pro. structuredContent carries the exact share counts and dollar amounts.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_institution_holdingsGet current stock holdings of an institutional investor (hedge fund, mutual fund, pension fund) from their latest SEC 13F filing.No findings
Why it is in this group
- The name "get_institution_holdings" says "get": a word for reading.
Description, as the server wrote it Get current stock holdings of an institutional investor (hedge fund, mutual fund, pension fund) from their latest SEC 13F filing. Returns top positions with share counts, values, and quarter-over-quarter changes. Every answer states its grain: ENTITY (a CIK that belongs to a manager family is answered for the whole family by default -- pass entity='filer' for that one filer's own 13F) and SECURITY (the default portfolio merges an issuer's share classes into one row, e.g. GOOG+GOOGL, and lists the per-class breakdown; pass `ticker` to get only that security). Shares and value are the 13F-reported totals over all legs; option legs are flagged. structuredContent carries exact shares/values and the grain fields.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_stock_activityGet institutional buying/selling activity trend for a stock over multiple quarters.No findings
Why it is in this group
- The name "get_stock_activity" says "get": a word for reading.
Description, as the server wrote it Get institutional buying/selling activity trend for a stock over multiple quarters. Shows how many institutions are buying vs selling, net share changes, and value flows — useful for detecting accumulation or distribution patterns. Plan limits: Free/keyless access covers the latest 13F quarter only; the multi-quarter trend requires Pro. Omit `quarters` to get the most your plan allows. structuredContent carries the exact net shares/values. Each quarter carries ko.io's comparability state (comparable / split_adjusted with its split factor / not_comparable / first_reported): a null share or value flow means UNKNOWN (withheld), never zero.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_stock_financialsGet quarterly or annual financial statements for a company (revenue, net income, EPS, margins, cash flow, debt ratios) from SEC 10-K/10-Q filings.No findings
Why it is in this group
- The name "get_stock_financials" says "get": a word for reading.
Description, as the server wrote it Get quarterly or annual financial statements for a company (revenue, net income, EPS, margins, cash flow, debt ratios) from SEC 10-K/10-Q filings. Plan limits: the Free plan and keyless access return only the latest quarterly statement; annual statements and earlier quarters require Pro (a request for them returns an explicit plan-limit error, never 'no data'). structuredContent carries the exact reported values.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_stock_holdersGet top institutional holders of a stock from SEC 13F filings.No findings
Why it is in this group
- The name "get_stock_holders" says "get": a word for reading.
Description, as the server wrote it Get top institutional holders of a stock from SEC 13F filings. Shows which hedge funds, mutual funds, and pension funds own the most shares, with quarter-over-quarter changes.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_stock_priceGet historical daily stock prices (OHLC).No findings
Why it is in this group
- The name "get_stock_price" says "get": a word for reading.
Description, as the server wrote it Get historical daily stock prices (OHLC). Returns a summary by default; set series=true to get the full daily price series (for backtesting / charting).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_stock_profileGet a company's profile — sector, market cap, price, P/E ratio, 52-week range, beta, dividend yield, and other key financials.No findings
Why it is in this group
- The name "get_stock_profile" says "get": a word for reading.
Description, as the server wrote it Get a company's profile — sector, market cap, price, P/E ratio, 52-week range, beta, dividend yield, and other key financials.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_treasury_yieldsGet U.S.No findings
Why it is in this group
- The name "get_treasury_yields" says "get": a word for reading.
Description, as the server wrote it Get U.S. Treasury yield curve data — daily yields for maturities from 1-month to 30-year. Essential for understanding interest rate environment and yield curve shape.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_insider_tradersList executives/insiders who have recently traded their company stock.No findings
Why it is in this group
- The name "list_insider_traders" says "list": a word for reading.
Description, as the server wrote it List executives/insiders who have recently traded their company stock. Filter by role (CEO only or all executives). Useful for finding notable insider buying/selling activity across the market.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_institutionsList top institutional investors (hedge funds, mutual funds, etc.) tracked in the SEC 13F database.No findings
Why it is in this group
- The name "list_institutions" says "list": a word for reading.
Description, as the server wrote it List top institutional investors (hedge funds, mutual funds, etc.) tracked in the SEC 13F database. Supports search by name and pagination.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
searchSearch across institutions, stocks, and insider traders in the ko.io SEC database.No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it Search across institutions, stocks, and insider traders in the ko.io SEC database. Institutions match by firm name OR manager name ('Seth Klarman' -> Baupost, 'Ackman' -> Pershing Square; person hits carry matched_person). Use this first when you have a name but need the CIK number, ticker, or slug to use with other tools.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
search_gov_contractsSearch U.S.No findings
Why it is in this group
- The name "search_gov_contracts" says "search": a word for reading.
Description, as the server wrote it Search U.S. federal prime-contract actions (USAspending, FY2015+) across companies, or rank companies by obligations with view=companies. Companies listed today plus reviewed links. Filter by ticker(s), agency, sub-agency, fiscal year or dates. Actions also support recipient, NAICS, award type and minimum absolute amount. Without tickers the window is at most 366 days. Exact decimal strings; signed obligations, not payments. Provisional recent months; Defense reports about 90 days late. Free: trailing 92 days; history: Pro.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
sec_get_filing_documentGet a source document from a SEC filing, served by ko.io.No findings
Why it is in this group
- The name "sec_get_filing_document" says "get": a word for reading.
Description, as the server wrote it Get a source document from a SEC filing, served by ko.io. Returns a ko.io LINK to the rendered document (open in a browser) plus, optionally, an extracted text excerpt. Never returns the whole file — for full content, open the link or request a specific section. Requires a paid ko.io plan (Pro): on Free or keyless access the call returns an explicit plan-limit error. Use sec_list_filings / sec_get_filing_index (open on every plan) to find filings and their files.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
sec_get_filing_indexEnumerate every file in a single SEC filing (primary document, exhibits, images, XBRL, the full .txt submission).No findings
Why it is in this group
- The name "sec_get_filing_index" says "get": a word for reading.
Description, as the server wrote it Enumerate every file in a single SEC filing (primary document, exhibits, images, XBRL, the full .txt submission). Pass a file name from here to sec_get_filing_document.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
sec_list_filingsList an entity's SEC filings from EDGAR (most recent first), each with its accession number.No findings
Why it is in this group
- The name "sec_list_filings" says "list": a word for reading.
Description, as the server wrote it List an entity's SEC filings from EDGAR (most recent first), each with its accession number. Provide the company's CIK (use search or get_stock_profile to find it). Returns accession numbers to pass to sec_get_filing_index / sec_get_filing_document.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http ko https://mcp.ko.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__ko__get_institution_holdings",
"mcp__ko__list_institutions",
"mcp__ko__get_stock_profile",
"mcp__ko__get_stock_holders",
"mcp__ko__get_stock_activity",
"mcp__ko__get_stock_price",
"mcp__ko__get_insider_trades",
"mcp__ko__list_insider_traders",
"mcp__ko__get_congress_trades",
"mcp__ko__get_congress_member",
"mcp__ko__search",
"mcp__ko__get_form144_notices",
"mcp__ko__sec_list_filings",
"mcp__ko__sec_get_filing_index",
"mcp__ko__sec_get_filing_document",
"mcp__ko__get_stock_financials",
"mcp__ko__get_treasury_yields",
"mcp__ko__get_fed_rates",
"mcp__ko__get_economic_indicators",
"mcp__ko__get_ftd_data",
"mcp__ko__get_financial_stress",
"mcp__ko__get_crypto_exposure",
"mcp__ko__get_crypto_holders",
"mcp__ko__get_crypto_holder",
"mcp__ko__get_eu_markets",
"mcp__ko__get_eu_insider_dealings",
"mcp__ko__get_eu_major_holdings",
"mcp__ko__get_eu_short_positions",
"mcp__ko__get_eu_annual_reports",
"mcp__ko__get_eu_issuer",
"mcp__ko__get_gov_contracts",
"mcp__ko__search_gov_contracts"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as ko. Review it before you use it.
