Skip to main content
Glama

Insider cluster buys — multiple insiders buying the same stock (SEC Form 4)

insider_cluster_buys
Read-onlyIdempotent

Use when the user asks about cluster buying or several insiders buying the same company. Returns only clusters, two or more insiders buying one issuer in the window, newest first; days and ticker narrow. Each row carries filing_url, offering_context, uniform_price_cluster (true when 3+ insiders bought at one price on one day), transaction_date, acceptance_datetime, aff10b5One (10b5-1 flag), is_amendment/original_accession (4/A linkage), and partial_fields (reason for any null). Caveat: only purchases that pass the signal filter are returned; code P alone is not proof of a buy.

Input Schema

NameRequiredDescriptionDefault
daysNoOnly rows filed within the last N days (relative to today).
as_ofNoPublish-boundary replay: UTC ISO-8601 instant (or a bare YYYY-MM-DD, read as end-of-day UTC). Returns only rows that had crossed the publish boundary at or before it — the exact feed visible at that past moment. Each row carries `first_served_at` (null on rows published before the stamp existed; those are kept, as they were already public).
limitNoMax rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap.
offsetNoRows to skip before this page (pagination). Default 0.
tickerNoCase-insensitive exact ticker filter, e.g. DKS.
include_unlistedNoInclude unlisted issuers (blank/NONE/N/A tickers and 5-letter mutual-fund classes). Default false = exchange-listed common stock only. Every row carries a `listed_equity` boolean.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / as_of
      Added value: +{
      +  "description": "Publish-boundary replay: UTC ISO-8601 instant (or a bare YYYY-MM-DD, read as end-of-day UTC). Returns only rows that had crossed the publish boundary at or before it — the exact feed visible at that past moment. Each row carries `first_served_at` (null on rows published before the stamp existed; those are kept, as they were already public).",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / include_unlisted
      Added value: +{
      +  "description": "Include unlisted issuers (blank/NONE/N/A tickers and 5-letter mutual-fund classes). Default false = exchange-listed common stock only. Every row carries a `listed_equity` boolean.",
      +  "type": "boolean"
      +}
  3. Changed5 schema fields changed
    • addedInput schema / properties / days
      Added value: +{
      +  "description": "Only rows filed within the last N days (relative to today).",
      +  "type": "integer"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Rows to skip before this page (pagination). Default 0.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / ticker
      Added value: +{
      +  "description": "Case-insensitive exact ticker filter, e.g. DKS.",
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[]
  4. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (read-only, idempotent, non-destructive), so the bar is lower, yet the description still adds real behavioral context: results are restricted to signal-filtered purchases, rows arrive newest first, and specific fields (partial_fields, is_amendment/original_accession, uniform_price_cluster) reveal data quality and lineage behavior.

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

Conciseness4/5

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

Front-loaded with the usage condition and the cluster definition, then a compact enumeration of row fields. It is dense but every clause carries information; the field list is somewhat list-heavy but justified since there is no output schema.

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

Completeness5/5

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

With no output schema, the description must describe returns, and it does so field by field, plus discloses the filtering caveat and the null-handling contract via partial_fields. Nothing material an agent needs to invoke or interpret this tool is missing.

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%, so all six parameters are already documented with their own semantics; the description only restates that days and ticker narrow the result set. Baseline 3 applies when the schema does the heavy lifting and the description adds no format or edge-case detail beyond it.

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?

States a specific verb+resource (returns insider cluster buys) and pins down the scope precisely: two or more insiders buying one issuer in the window. This clearly separates it from the sibling insider_buys, which would cover single-insider purchases.

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?

"Use when the user asks about cluster buying or several insiders buying the same company" gives an explicit trigger condition, and the caveat that code P alone is not proof of a buy tells the agent when a result should not be over-read. It stops short of naming sibling alternatives like insider_buys to route away from this tool.

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.