Skip to main content
Glama

Insider transactions (Form 4)

akkru_insider_transactions
Read-onlyIdempotent

Trades insiders report on SEC Form 4 (and Form 5), nested filing then transactions, with the insiders, footnotes and links to the filing. A trade's direction is its acquired_disposed_code (A or D). Rows failing a consistency check carry data_quality_flags and are left out unless include_anomalies is true; the count left out is reported.

  • list: one company's (ticker or cik) and/or one insider's (insider_cik) filings. 30 credits per page.

  • stats: totals over a date window for one company and/or insider, with the ids of every transaction counted. 40 credits plus 5 per 1,000 transactions counted.

  • get: transactions by id (from stats), up to 100. 10 credits per 5 ids.

  • insiders: everyone who filed a Form 4 for one company, one row per CIK, with roles, latest title and filing counts; gives the insider_cik the other actions take. 30 credits.

  • types: the transaction codes with their official names. Free.

  • tickers: the companies with Form 4 data, 500 per page. 30 credits per page.

  • search: screen every company's trades with trade_filters and aggregate_filters. Pro plan or higher; 65-920 credits. A company outside your plan's coverage returns 403 and the call is still charged.

Input Schema

NameRequiredDescriptionDefault
cikNo(list, stats, insiders) Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both.
pageNo(list, get, tickers, search) Page number, from 1; the response's next_page gives the next one.
actionYesWhat to do; each action is described in the tool description.
detailNoResponse detail, same price at every level: "full" (default) returns everything; "light" leaves out the bulkiest fields, such as breakdown lists; "minimal" returns only the values and what identifies them, without sources or calculation details. Every action takes it; a call without detail levels ignores it. Try "light" or "minimal" for shorter replies that use less context and fewer tokens.
methodNo(stats) "ad" (default): totals by acquired_disposed_code; "ps": P as a buy and S as a sell, only those two codes.
tickerNo(list, stats, insiders) Company ticker, e.g. "AAPL" (US), "000100" (Korea), "1332" (Japan), "VIRI_F" (Europe), "600519_CN" (China A-share); any symbol the company has traded under.
sectorsNo(search) Only companies in these sectors (names from akkru_metrics action "catalog"). Pro plan or higher.
sort_byNo(search) Grouped: ticker or txn_count. One row per transaction: transaction_date, filing_date, transaction_value, shares, price_per_share, own_pct_change, split_adjusted_shares or split_adjusted_price.
tickersNo(search) Only these companies (up to 100); any symbol a company has traded under. Default: every company.
ids_pageNo(stats) Page of transaction_ids in the stats response (default 1).
page_sizeNo(list, get, tickers, search) list, get: filings per page; search: rows per page, with page times page_size at most 500; tickers: companies per page, up to 500.
as_of_dateNo(list, stats, get, insiders, tickers, search) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. stats, search: also the end of the transaction-date window. Default: no cutoff.
sort_orderNo(search) "desc" (default) or "asc".
start_dateNo(stats, search) Window start, transaction date "YYYY-MM-DD".
insider_cikNo(list, stats) Insider SEC CIK, digits (from action "insiders").
relationshipNo(list, stats, insiders) list, stats: the role on the filing, any of "is_director", "is_officer", "is_ten_percent_owner", "is_other". insiders: a role ever reported, any of "ever_director", "ever_officer", "ever_ten_percent_owner", "ever_other".
ids_page_sizeNo(stats) transaction_ids per page, 1-1,000 (default 200).
is_derivativeNo(stats) true: derivative rows only; false: non-derivative rows only.
trade_filtersNo(search) Trade-level filters: transaction_code, relationship, is_derivative, principal_amount_not_shares, include_anomalies, exclude_likely_merged, include_unresolved_amendments, and up to 8 conditions {field, op, value} on transaction_value, price_per_share, shares, own_pct_change, split_adjusted_shares or split_adjusted_price.
exclude_tickersNo(search) Leave these companies out (up to 100).
group_by_tickerNo(search) true (default): one row per company; false: one row per transaction.
transaction_idsNo(get) Transaction ids from action "stats" (1-100).
transaction_codeNo(list, stats) SEC transaction codes to keep, e.g. ["P", "S"] (up to 20; action "types" lists them). Unknown codes are dropped and reported in _warnings.
aggregate_filtersNo(search) Company-level conditions (up to 8) {metric, op, value} on value_acquired, value_disposed, net_value, shares_acquired, shares_disposed, net_shares, txn_count, txn_count_acquired, txn_count_disposed, max_txn_value_acquired, max_txn_value_disposed or distinct_insiders. Operators for both: >, >=, <, <=, between ([low, high]).
include_anomaliesNo(list, stats) true: include rows that fail a consistency check (left out by default).
exclude_likely_mergedNo(list, stats) true: leave out filings whose amendment match is only probable.
transaction_form_typeNo(list) Only "4" or only "5".
include_unresolved_amendmentsNo(list, stats) true: include amendments that could not be matched to their original filing.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / as_of_date / description
      Previous value: -"(stats, search) Window end, transaction date \"YYYY-MM-DD\" (not in the future); filings submitted after it are left out too."New value: +"(list, stats, get, insiders, tickers, search) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. stats, search: also the end of the transaction-date window. Default: no cutoff."
  2. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the readOnly/idempotent annotations by disclosing per-action credit costs, the fact that out-of-plan companies return 403 and are still charged, and the default exclusion of rows failing a consistency check with the omitted count reported. These are decision-relevant behaviors (cost, failure, data filtering) that no structured field carries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-sentence model of the resource, then a bullet per action with cost, then the plan/403 caveat last. Dense but every line carries information an agent needs to choose an action, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 28-parameter, 7-action tool with no output schema, the description covers what each action returns, how ids flow between actions, cost, and pagination behavior. Remaining gaps are error handling beyond the 403 case and any differentiation from sibling data tools, which is a minor shortfall rather than a blocking one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself annotates each parameter with its applicable actions, so the description correctly stays out of per-parameter restatement. It adds a little beyond the schema — the A/D direction meaning and the id handoff between stats and get — but most parameter meaning is already schema-side, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (insider trades reported on SEC Form 4/5) plus the exact data shape returned (filing-nested transactions with insiders, footnotes and filing links), then enumerates all seven actions so the agent knows the tool is a multi-action surface rather than a single lookup. It also disambiguates the direction field (acquired_disposed_code A/D), which an agent could otherwise misread.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes between actions: stats outputs ids that get consumes, insiders outputs the insider_cik that list/stats take, types is the lookup for transaction_code, search is plan-gated. That is real when-to-use guidance. It does not, however, say when to prefer this tool over siblings like akkru_filings or akkru_institutional_holdings, so the sibling boundary is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources