Overview
Insider Trading works by parsing SEC Form 4 ownership filings for US public companies into clean, normalized transactions and layering on derived intelligence the raw filings do not carry - open-market buy versus sell totals, net insider activity, distinct insiders, and a bullish/bearish sentiment read. Compensation noise like option grants and tax withholding is separated from real open-market signals. Data is refreshed continuously from official SEC filings.
Live Test Insider Trading Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as InsiderTradingSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "InsiderTradingSkill",
"arguments": {
"ticker": "AAPL"
}
}You do not name the tool yourself; the model picks it. Asking about AAPL in the terms this skill covers is enough for it to reach for InsiderTradingSkill on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
tickerRequired | string | Stock ticker symbol (e.g. AAPL, MSFT, ADBE) length 1–6 |
typeOptionalPremium | string | Filter to open-market buys or sells (buy or sell). |
limitOptionalPremium | integer | Number of transactions to return (1-25). Defaults to 5. range 1–25 |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"ticker": "AAPL",
"cik": "0000320193",
"company": "Apple Inc.",
"totalRecentForm4": 512,
"count": 5,
"lastTransactionDate": "2025-10-14",
"daysSinceLastTransaction": 64,
"transactions": [
{
"filingDate": "2025-10-16",
"transactionDate": "2025-10-14",
"insiderName": "COOK TIMOTHY D",
"insiderTitle": "Chief Executive Officer",
"relationship": {
"director": true,
"officer": true,
"tenPercentOwner": false
},
"security": "Common Stock",
"transactionCode": "S",
"transactionType": "Sale",
"direction": "sell",
"acquiredDisposed": "D",
"shares": 511000,
"pricePerShare": 245.5,
"value": 125450500,
"sharesOwnedAfter": 3280000,
"accessionNumber": "0000320193-25-000118",
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000118/xslF345X05/wf-form4.xml"
},
{
"filingDate": "2025-10-02",
"transactionDate": "2025-10-01",
"insiderName": "MAESTRI LUCA",
"insiderTitle": "Senior Vice President, CFO",
"relationship": {
"director": false,
"officer": true,
"tenPercentOwner": false
},
"security": "Common Stock",
"transactionCode": "S",
"transactionType": "Sale",
"direction": "sell",
"acquiredDisposed": "D",
"shares": 74213,
"pricePerShare": 241.18,
"value": 17899091,
"sharesOwnedAfter": 112884,
"accessionNumber": "0000320193-25-000112",
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000112/xslF345X05/wf-form4.xml"
},
{
"filingDate": "2025-08-20",
"transactionDate": "2025-08-18",
"insiderName": "WILLIAMS JEFFREY E",
"insiderTitle": "Chief Operating Officer",
"relationship": {
"director": false,
"officer": true,
"tenPercentOwner": false
},
"security": "Common Stock",
"transactionCode": "P",
"transactionType": "Purchase",
"direction": "buy",
"acquiredDisposed": "A",
"shares": 5000,
"pricePerShare": 226.4,
"value": 1132000,
"sharesOwnedAfter": 489210,
"accessionNumber": "0000320193-25-000101",
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000101/xslF345X05/wf-form4.xml"
},
{
"filingDate": "2025-08-04",
"transactionDate": "2025-08-01",
"insiderName": "ADAMS KATHERINE L",
"insiderTitle": "Senior Vice President, General Counsel",
"relationship": {
"director": false,
"officer": true,
"tenPercentOwner": false
},
"security": "Common Stock",
"transactionCode": "A",
"transactionType": "Grant/Award",
"direction": null,
"acquiredDisposed": "A",
"shares": 25000,
"pricePerShare": 0,
"value": 0,
"sharesOwnedAfter": 312450,
"accessionNumber": "0000320193-25-000098",
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000098/xslF345X05/wf-form4.xml"
},
{
"filingDate": "2025-08-04",
"transactionDate": "2025-08-01",
"insiderName": "O'BRIEN DEIRDRE",
"insiderTitle": "Senior Vice President",
"relationship": {
"director": false,
"officer": true,
"tenPercentOwner": false
},
"security": "Common Stock",
"transactionCode": "F",
"transactionType": "Tax Withholding",
"direction": null,
"acquiredDisposed": "D",
"shares": 8123,
"pricePerShare": 232.1,
"value": 1885348,
"sharesOwnedAfter": 145200,
"accessionNumber": "0000320193-25-000097",
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000097/xslF345X05/wf-form4.xml"
}
],
"summary": {
"totalTransactions": 5,
"distinctInsiders": 5,
"buys": {
"count": 1,
"shares": 5000,
"value": 1132000
},
"sells": {
"count": 2,
"shares": 585213,
"value": 143349591
},
"netShares": -580213,
"netValue": -142217591,
"buySellRatio": 0.01,
"sentiment": "Bearish",
"clusterBuy": false
}
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
ticker | string | AAPL | Stock ticker symbol for the company |
cik | string | 0000320193 | SEC Central Index Key unique identifier |
company | string | Apple Inc. | Official registered name of the company |
totalRecentForm4 | number | 512 | Total Form 4 filings in the company's recent feed |
count | number | 5 | Number of transactions returned in this response |
lastTransactionDate | string | 2025-10-14 | Date of the most recent insider transaction |
daysSinceLastTransactionPremium | number | 64 | Days since the most recent insider transaction |
transactions | array[5] | Recent insider transactions, most recent first | |
transactions.0.filingDate | string | 2025-10-16 | Date the Form 4 was filed |
transactions.0.transactionDate | string | 2025-10-14 | Date the transaction occurred |
transactions.0.insiderName | string | COOK TIMOTHY D | Name of the reporting insider |
transactions.0.insiderTitle | string | Chief Executive Officer | Role or title of the insider |
transactions.0.relationship | object | {…} | Insider relationship flags (director, officer, 10% owner) |
transactions.0.relationship.director | boolean | true | Whether the insider is a director of the company |
transactions.0.relationship.officer | boolean | true | Whether the insider is an officer of the company |
transactions.0.relationship.tenPercentOwner | boolean | false | Whether the insider owns 10% or more of the company's stock |
transactions.0.security | string | Common Stock | Title of the security transacted |
transactions.0.transactionCode | string | S | SEC transaction code (P, S, A, M, F, ...) |
transactions.0.transactionType | string | Sale | Human-readable transaction type |
transactions.0.direction | string | sell | Open-market direction (buy or sell), when applicable |
transactions.0.acquiredDisposed | string | D | Whether shares were acquired (A) or disposed (D) |
transactions.0.shares | number | 511000 | Number of shares in the transaction |
transactions.0.pricePerShare | number | 245.5 | Price per share for the transaction |
transactions.0.value | number | 125450500 | Total transaction value (shares x price) |
transactions.0.sharesOwnedAfter | number | 3280000 | Shares owned by the insider after the transaction |
transactions.0.accessionNumber | string | 0000320193-25-000118 | SEC accession number for the filing |
transactions.0.url | string | https://www.sec.gov/Archives/edgar/data/320193/000032019325000118/xslF345X05/wf-form4.xml | Direct link to the Form 4 filing |
summary | object | {…} | Derived insider-sentiment summary |
summary.totalTransactionsPremium | number | 5 | Transactions in the summarized window |
summary.distinctInsidersPremium | number | 5 | Number of distinct insiders transacting |
summary.buysPremium | object | {…} | Open-market buy totals (count, shares, value) |
summary.buys.countPremium | number | 1 | Number of open-market buy transactions |
summary.buys.sharesPremium | number | 5000 | Total shares acquired in open-market buy transactions |
summary.buys.valuePremium | number | 1132000 | Total dollar value of open-market buy transactions |
summary.sellsPremium | object | {…} | Open-market sell totals (count, shares, value) |
summary.sells.countPremium | number | 2 | Number of open-market sell transactions |
summary.sells.sharesPremium | number | 585213 | Total shares disposed of in open-market sell transactions |
summary.sells.valuePremium | number | 143349591 | Total dollar value of open-market sell transactions |
summary.netSharesPremium | number | -580213 | Net shares bought minus sold (open-market) |
summary.netValuePremium | number | -142217591 | Net dollar value bought minus sold (open-market) |
summary.buySellRatioPremium | number | 0.01 | Ratio of buy value to sell value |
summary.sentimentPremium | string | Bearish | Insider sentiment read (Bullish, Bearish, Neutral) |
summary.clusterBuyPremium | boolean | false | Whether multiple insiders bought in the window |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 6 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Executive Stock Alerts
- Alert wealth managers when corporate officers or directors execute open-market share purchases or sales above defined dollar thresholds.
- Portfolio Watchlist Tracking
- When public companies report Form 4 filings, notify retail subscribers which corporate officers bought shares and their post-transaction share counts.
- Quant Factor Screening
- To identify executive sentiment shifts, feed algorithmic models with open-market transaction amounts and transaction dates across equity portfolios.
- Director Ownership Tracking
- Compliance teams track equity holdings and monitor reporting thresholds for corporate directors and ten-percent owners across SEC filings.
Other ways to use Insider Trading Skill
Set up Insider Trading Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Finance: