The evidence
Insider trades
Form 4 insider transactions for one company, newest first: who, role, code (P buy, S sell, A grant, M exercise, F tax), shares and dollar value.
TOOL
get_insider_tradescurl https://mcp.optimistfi.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_insider_trades","arguments":{"entity":"NVDA","limit":3}}}'When a model calls it
Models choose a tool from its description. This is the one the server publishes:
Form 4 insider transactions for one company, newest first: who, role, code (P buy, S sell, A grant, M exercise, F tax), shares and dollar value. Use when the user asks: are insiders buying X; did X's CEO sell; insider activity at X. Not for: Congress → get_congress_trades. Args: entity; start; end; limit.
- are insiders buying X
- did X's CEO sell
- insider activity at X
For something else: get_congress_trades.
Parameters
entitystringrequired
The company: a ticker (AAPL, BRK.B), a company name (Apple) or an SEC CIK.
startstring
Earliest transaction date, YYYY-MM-DD.
endstring
Latest transaction date, YYYY-MM-DD.
limitintegerdefault 25
Most transactions, newest first to return.
Response
A real response to the example call, trimmed: lists cut to two items, long text cut short. The result's content holds the answer as JSON text; parsed, it reads:
[
{
"entity": {
"figi": "BBG000BBJQV0",
"cik": "0001045810",
"ticker": "NVDA",
"name": "NVIDIA CORP"
},
"type": "insider_trade",
"direction": "backward",
"event_time": "2026-09-21",
"as_of": "2026-09-23",
"confidence": "confirmed",
"source": {
"name": "SEC EDGAR Form 4",
"url": "https://www.sec.gov/Archives/edgar/data/1045810/000169684126000014/",
"license": "public"
},
"data": {
"insider_name": "Teter Timothy S.",
"insider_title": "EVP, General Counsel and Sec",
"txn_code": "S",
"acquired_disposed": "D",
"shares": 12483,
"price": 222.19,
"value": 2773597.77,
"shares_owned_after": 2687660,
"transaction": "open-market sale",
"direction": "sold",
"insider_display_name": "Timothy S. Teter (EVP, General Counsel and Sec)"
}
},
{
"entity": {
"figi": "BBG000BBJQV0",
"cik": "0001045810",
"ticker": "NVDA",
"name": "NVIDIA CORP"
},
"type": "insider_trade",
"direction": "backward",
"event_time": "2026-09-21",
"as_of": "2026-09-23",
"confidence": "confirmed",
"source": {
"name": "SEC EDGAR Form 4",
"url": "https://www.sec.gov/Archives/edgar/data/1045810/000169684126000014/",
"license": "public"
},
"data": {
"insider_name": "Teter Timothy S.",
"insider_title": "EVP, General Counsel and Sec",
"txn_code": "S",
"acquired_disposed": "D",
"shares": 13478,
"price": 223.05,
"value": 3006267.9,
"shares_owned_after": 2692159,
"transaction": "open-market sale",
"direction": "sold",
"insider_display_name": "Timothy S. Teter (EVP, General Counsel and Sec)"
}
},
"… 2 more"
]Fields are explained in Reading a response.
Errors
A call the server cannot run (a missing or invalid argument) comes back with
isError: true and the reason in words. A company or market the server cannot match comes back as a result naming what was not found. See Errors and limits.