Skip to main content
Glama

Server Details

Filing-verified SEC EDGAR insider (Form 4), 13D, 13F & 8-K data, no sign-in. Verify any claim.

Ownership verified
Status
Healthy
Uptime
83.6% over 53 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
TradestarV5/insider-signals
GitHub Stars
2
Server Listing
TradeStar Insider

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

Each tool targets a reasonably distinct resource+action, and the retrieve-vs-verify split is clear. Minor overlap exists: insider_cluster_buys is a filtered subset of insider_buys, insider_amendments_recent overlaps with insider_buys (amendments of buys), and federal_awards_recent sits oddly among securities-filing tools.

Naming Consistency4/5

All names use consistent snake_case with a domain_action shape (insider_buys, fund_position_changes, verify_13f_change). Minor deviations: the verify_* tools invert the ordering relative to the retrieval tools, and some retrieval tools carry a trailing '_recent' while others do not.

Tool Count4/5

Ten tools is well-scoped for an SEC-filings intelligence server, and each tool covers a distinct filing type or verification task. Slight redundancy in the buy/cluster/amendment trio, but nothing feels gratuitous.

Completeness3/5

Insider buying, 13F deltas, 13D stakes, and verification are well covered, but notable gaps exist: there is no insider-sells retrieval tool (only buys), and 8-K is verify-only with no retrieval counterpart, creating an asymmetric surface.

Available Tools

10 tools
activist_stakes_recentRecent activist hedge-fund stakes (SEC Schedule 13D)A
Read-onlyIdempotent
Inspect

Use when the user asks about activist investors, hedge-fund stakes, or recent 13D filings on a company. Returns activist Schedule 13D/13D-A filings on US-listed companies, newest first then by stated-intent strength; ticker, min_percent and days narrow. Each row carries its source filing_url and item4_excerpt (the activist's own Item 4 intent sentence, quoted from the filing as data, capped at its current length of 600 chars). Caveat: passive 13G is not covered; filings without a source link are dropped.

NameRequiredDescriptionDefault
daysNoOnly stakes filed within the last N days.
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.
tickerNoFilter to one subject ticker (case-insensitive), e.g. DH
min_percentNoOnly stakes at or above this percent-of-class

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: the sort order (newest first, then stated-intent strength), the per-row payload (filing_url and a 600-char item4_excerpt quoted as data), and two real behavioral caveats (13G excluded, filings lacking a source link dropped).

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 'Use when' trigger, then scope, then return shape, then caveats in a logical order with zero filler. It is dense but every clause carries information, with only slight length pressure from the item4_excerpt parenthetical.

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 return values and it does: sort order, per-row fields, excerpt cap, and drop/coverage rules. Combined with 100% schema coverage and safety annotations, an agent has everything needed to call and interpret this correctly.

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 the schema already documents all five parameters including pagination and limit semantics. The description only names three filters (ticker, min_percent, days) that 'narrow' results, adding no syntax or edge-case detail beyond the schema. Baseline 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?

States a specific verb (returns) and resource (activist Schedule 13D/13D-A filings on US-listed companies), and pins the domain precisely enough to be distinguished from the passive-13G world it explicitly excludes. An agent can tell what this returns without opening the schema.

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?

Opens with an explicit trigger ('Use when the user asks about activist investors, hedge-fund stakes, or recent 13D filings') and gives an exclusion (passive 13G is not covered). It does not name the sibling verify_activist_13d as the alternative for verification, so routing to the closest sibling 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.

federal_awards_recentRecent U.S. federal contract awards (USAspending.gov)A
Read-onlyIdempotent
Inspect

Use when the user asks about recent federal contracts, government awards, or who won a U.S. federal contract. Returns newly signed federal awards, newest first; min_amount sets a USD floor, days a last-N-days window. Every award carries its source award_url. Caveat: awards without a source link are dropped and never returned.

NameRequiredDescriptionDefault
daysNoOnly awards signed within the last N days.
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.
min_amountNoOnly awards at or above this USD amount

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is covered. The description adds real behavioral value beyond them: ordering (newest first), the amount/days filtering semantics, that each award carries its source award_url, and a non-obvious data-loss caveat that awards without a source link are silently dropped.

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?

Three tight sentences, front-loaded with the trigger condition, then return shape, then the caveat. No filler, and the most surprising information (dropped awards) is placed last for emphasis.

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 read-only list tool with no output schema, the description covers trigger, ordering, filter semantics, and the key gotcha about dropped awards. Pagination and total_matched are only in the schema, which is acceptable since the schema is complete.

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 four parameters (days, limit, offset, min_amount) are already documented in the schema. The description only restates min_amount and days, adding no format or syntax detail beyond it — the baseline 3 applies when the schema does the heavy lifting.

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 newly signed federal awards') and explicitly frames the trigger scenario ('recent federal contracts, government awards, or who won a U.S. federal contract'). The domain is clearly distinct from the SEC/13F/insider siblings, so an agent can route without opening the schema.

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?

Opens with an explicit 'Use when the user asks about...' condition, giving clear positive selection guidance. It does not name alternatives or state when NOT to use it, but the sibling set is an unrelated domain, so the routing risk is low.

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

fund_position_changesHedge-fund / institutional position changes (SEC 13F, quarter-over-quarter)A
Read-onlyIdempotent
Inspect

Use when the user asks what a fund bought or sold, how a 13F filer changed its holdings, or which institutions opened/added/trimmed/exited a position. Returns quarter-over-quarter deltas, newest first; filer, change_type, min_value_usd, days narrow. Each row carries as_of_quarter_end, filed_date, lag_days, value_usd (whole dollars), cusip, issuer_name and its source filing_url; ticker is null (never guessed). Caveat: the delta is the product, not a trading edge — see the instructions and each response's coverage note for the universe and CIK scope.

NameRequiredDescriptionDefault
daysNoOnly changes filed within the last N days.
filerNoFilter to one fund by name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK
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.
change_typeNoOnly this kind of quarter-over-quarter change
min_value_usdNoOnly positions at or above this current value in WHOLE US dollars

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: newest-first ordering, that ticker is deliberately left null rather than guessed, and a caveat that the delta is not a trading edge, plus a pointer to a per-response coverage note.

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?

Three dense sentences, front-loaded with the trigger, then filters, then row shape, then caveat. The row-field enumeration is long but justified because there is no output schema; nothing is pure 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?

With no output schema, the description usefully compensates by listing the returned row fields (as_of_quarter_end, filed_date, lag_days, value_usd, cusip, issuer_name, filing_url) and flagging the null ticker. It also scopes the data universe via the coverage note. Only the CIK/universe scope is deferred rather than stated, which is a minor gap.

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 the schema already documents all six parameters in detail (including the limit<=0 no-cap rule and offset paging). The description only names four of them as filters and adds the 'newest first' ordering, which is not in the schema but is minor. Baseline 3 is correct here.

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?

The description states a specific verb and resource (quarter-over-quarter SEC 13F position deltas) and enumerates the exact user phrasings that should trigger it ('what a fund bought or sold', 'opened/added/trimmed/exited a position'). This is precise enough to separate it from the verify_* siblings, which check a specific claim rather than surface deltas.

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?

It gives clear positive trigger conditions with concrete example questions, so an agent knows when to reach for it. It stops short of naming an alternative or an exclusion (e.g., when to prefer verify_13f_change), so it is context without routing.

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

insider_amendments_recentRecent Form 4/A amendments and what each corrected (SEC Form 4/A)A
Read-onlyIdempotent
Inspect

Use when the user asks which insider filings were amended, corrected, or restated, or wants recent Form 4/A amendments. Returns 4/A amendments, newest-filed first; ticker, issuer_name, person, start/end, days narrow. Each row carries the amendment_accession, filed_date, issuer/insider, source filing_url, the original_accession it amends (when collected), and changed_fields (before/after). Caveat: when the original is not collected the amendment is still listed with original_in_corpus=false and before/after null (never guessed); linkage is by issuer/owner/period.

NameRequiredDescriptionDefault
endNoOnly amendments filed on/before this ISO date
daysNoOnly amendments filed within the last N days.
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.
startNoOnly amendments filed on/after this ISO date
offsetNoRows to skip before this page (pagination). Default 0.
personNoFilter by insider name substring (case-insensitive)
tickerNoFilter to one issuer ticker (case-insensitive substring), e.g. GLBZ
issuer_nameNoFilter by issuer/company name substring (case-insensitive)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already establish readOnly/idempotent/non-destructive, and the description adds substantive traits beyond them: ordering (newest-filed first), per-row return contents, and a real behavioral caveat that uncollected originals still appear with original_in_corpus=false and null before/after values that are 'never guessed'. That linkage-by-issuer/owner/period detail is exactly the kind of edge-case behavior an agent needs.

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?

The trigger sentence is front-loaded and the return-shape and caveat follow logically, with no redundant filler. It is dense and slightly cluttered with field lists in prose, which keeps it from a 5.

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 shoulders the burden of describing the return shape (amendment_accession, filed_date, issuer/insider, filing_url, original_accession, changed_fields) and the not-collected edge case. For a nine-parameter read tool, nothing essential to correct invocation 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 the schema already documents all nine parameters with formats and defaults. The description only summarizes that ticker, issuer_name, person, start/end and days 'narrow' the results, adding no syntax or filtering semantics beyond the structured fields; baseline 3 is appropriate.

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?

The description uses a specific verb and resource ('Returns 4/A amendments, newest-filed first') and scopes the task to amended/corrected/restated insider filings, which cleanly separates it from siblings like insider_buys and insider_cluster_buys. An agent can identify the tool without opening the schema.

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?

It gives an explicit trigger ('Use when the user asks which insider filings were amended, corrected, or restated'), which is strong when-to-use guidance. It does not name an explicit alternative sibling or a when-not condition, so it stops short of a 5.

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

insider_buysInsider buys by ticker, today, or a date range (SEC Form 4)A
Read-onlyIdempotent
Inspect

Use when the user asks which insiders bought a stock, whether a ticker has insider buying, or for Form 4 buys in a date range. Pass ticker, start+end for an inclusive ISO range, or neither for today's buys (SEC code P); days narrows, include_unlisted adds non-listed issuers. Each row carries filing_url, offering_context, 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 is not proof of a buy.

NameRequiredDescriptionDefault
endNoInclusive range end, ISO YYYY-MM-DD. Give with `start` for a date range.
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.
startNoInclusive range start, ISO YYYY-MM-DD. Give with `end` for a date range.
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.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantive context: the signal filter restricts results, code P is not proof of a buy, and rows carry `partial_fields` explaining nulls. It does not cover rate limits or response envelope details, but the added caveats are real behavioral disclosure.

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 with the usage trigger, then parameter routing, then the row shape, then the caveat — each sentence carries distinct information with no restatement of the schema or name.

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?

There is no output schema, so enumerating row fields (filing_url, offering_context, transaction_date, aff10b5One, is_amendment/original_accession, partial_fields) is necessary and done. All 8 parameters are documented in the schema, and the one semantic trap (code P vs. a genuine buy) is called out.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine value the schema does not: how the filters combine ('ticker, start+end for an inclusive ISO range, or neither for today's buys') and what the default path yields (SEC code P for today). It also explains the role of `days` and `include_unlisted` in prose.

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 (insider buys / SEC Form 4) and immediately scopes it by ticker, today, or date range, which separates it from siblings like insider_cluster_buys, insider_amendments_recent, and verify_insider_purchase. An agent can route to it without opening the schema.

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?

The opening sentence gives explicit trigger conditions ('Use when the user asks which insiders bought a stock...'), and the second sentence tells the agent exactly how to shape the call (ticker, start+end, or neither for today). It stops short of naming sibling alternatives or exclusion cases, so it is clear context without full when-not guidance.

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

insider_cluster_buysInsider cluster buys — multiple insiders buying the same stock (SEC Form 4)A
Read-onlyIdempotent
Inspect

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.

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.

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.

verify_13f_changeFact-check a 13F position-change claim against SEC Form 13F-HRA
Read-onlyIdempotent
Inspect

Use when the user wants to verify or fact-check whether a fund (filer name/CIK) reported a CHANGE in a position in an issuer (issuer_name or cusip) in a quarter. Returns held (reported a change — opened/added/trimmed, with source filing + link), not_held (reported the position exited), not_found (no reported change — does NOT mean the fund didn't hold it), or out_of_coverage. Caveat: filing-verified; CANNOT confirm an unchanged holding (13F deltas only) — a 'held, unchanged' position produces no row.

NameRequiredDescriptionDefault
endNoQuarter-window end (ISO) if the claim spans quarters
cusipNo9-char CUSIP of the held security — give this or issuer_name. (ticker is never accepted: 13F carries no authoritative ticker)
filerNoFund/institution name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK — REQUIRED
startNoQuarter-window start (ISO) if the claim spans quarters
quarterNoAs-of quarter-end the claim is about, ISO YYYY-MM-DD (e.g. '2026-06-30')
issuer_nameNoHeld company/issuer name (e.g. 'Apple') — give this or cusip

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by enumerating the four result statuses and, critically, warning that not_found does NOT mean the fund didn't hold the position and that filing-verified deltas cannot confirm an unchanged holding. That is exactly the negative-result context an agent needs to avoid over-claiming.

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 trigger sentence and then the return semantics; the parentheticals are dense but each carries real information. Slightly long, but no sentence is filler.

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 supplies the return-value vocabulary and the interpretive caveats that would otherwise be missing, including the out_of_coverage state and the delta-only limitation. An agent has everything needed to call it and interpret results.

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 filer/issuer_name/cusip/quarter semantics are already documented in the schema. The description restates the fund + issuer + quarter composite query shape but adds no new format or constraint detail, so baseline 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 verb (verify/fact-check) plus the exact resource (a 13F position-change claim by a fund in an issuer in a quarter), which cleanly separates it from siblings like verify_activist_13d, verify_8k_event, and verify_insider_purchase.

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?

Opens with an explicit 'Use when...' trigger naming the user intent, filer and issuer inputs. It also states a when-not via the caveat that unchanged holdings cannot be confirmed, though it does not explicitly name which sibling to use instead when the claim is about 13D/8-K/insider activity.

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

verify_8k_eventFact-check an 8-K disclosure claim against SEC Form 8-KA
Read-onlyIdempotent
Inspect

Use when the user wants to verify or fact-check that a company filed an 8-K carrying specific SEC item code(s) in a timeframe. Pass registrant (cik/company/accession), item code(s) and dates. Returns confirmed (with source filing + link), not_found, partial (itemised claimed-vs-filed), out_of_scope (claims about the filing's meaning aren't covered — it is never paraphrased), or out_of_coverage. Caveat: filing-verified — item codes are the SEC controlled vocabulary parsed from the filing, never inferred.

NameRequiredDescriptionDefault
cikNoRegistrant CIK (leading zeros ignored), e.g. 320193
endNoWindow end (ISO) if the claim is a range
dateNoClaimed filing date, ISO YYYY-MM-DD (matched ±3 filing days)
itemsNoClaimed SEC 8-K item code(s), comma-separated (e.g. '5.02' or '1.01,9.01') — checked against the filing
startNoWindow start (ISO) if the claim is a range
accessionNoSEC filing accession, e.g. 0001193125-26-389400
company_nameNoRegistrant name substring (case-insensitive), e.g. 'Apple'

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them by enumerating the five possible outcomes (confirmed/not_found/partial/out_of_scope/out_of_coverage) and disclosing the filing-verified caveat that item codes come from SEC controlled vocabulary and are never inferred.

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?

Two dense sentences that front-load the trigger and then the return modes, with no filler. The enumeration of statuses is information-dense but earns its place since no output schema exists.

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?

For a seven-parameter, zero-required verification tool with no output schema, the description supplies exactly what is missing elsewhere: the matching semantics, the full set of return modes, and the scope caveat, leaving no material gap for an agent calling it correctly.

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 seven parameters are already documented in the schema. The description restates the parameter groups ('registrant (cik/company/accession), item code(s) and dates') without adding syntax or format detail beyond what the schema provides, 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?

States a specific verb and resource ('verify or fact-check that a company filed an 8-K carrying specific SEC item code(s)') and scopes it to the SEC Form 8-K domain, clearly distinguishing it from the sibling verify_13f_change, verify_activist_13d and verify_insider_purchase tools.

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?

The leading 'Use when...' clause gives a clear trigger condition, and the out_of_scope status explicitly tells the agent what this tool will not cover (claims about a filing's meaning). No sibling alternatives are named, so it falls short of a full when/when-not/alternatives treatment.

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

verify_activist_13dFact-check an activist 13D claim against SEC Schedule 13D/13D-AA
Read-onlyIdempotent
Inspect

Use when the user wants to verify or fact-check a claim about an activist stake or 13D filing (ticker/subject, filer, percent-of-class, stated intent, timeframe). Returns confirmed (with source filing + link), not_found, partial (itemised claimed-vs-filed), out_of_scope (passive 13G isn't covered), or out_of_coverage. Every response states the coverage window checked. Caveat: filing-verified — absence is reported as absence, never guessed.

NameRequiredDescriptionDefault
endNoWindow end (ISO) if the claim is a range
dateNoClaimed filed date, ISO YYYY-MM-DD (matched ±3 filing days)
startNoWindow start (ISO) if the claim is a range
intentNoOptional pre-registered intent: I1 control/take-private, I2 board/proxy, I3 strategic/value
tickerNoSubject-company ticker (case-insensitive), e.g. DH
form_typeNoOptional; only activist 13D/13D-A is covered — a passive 13G returns out_of_scope
filer_nameNoActivist filer name in any order, e.g. 'Elliott Management'
subject_nameNoSubject/target company name (use if you don't have the ticker)
percent_of_classNoClaimed percent-of-class owned (matched ±0.5 percentage points)

TDQS

A4.4/5.0
Behavior5/5

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

Well beyond the annotations (readOnly/idempotent/openWorld=false, which only confirm a safe read), the description discloses the full outcome taxonomy (confirmed, not_found, partial, out_of_scope, out_of_coverage), that every response states the coverage window checked, and the critical caveat that absence is reported as absence, never guessed. That is exactly the operational honesty an agent needs for a fact-checking tool.

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 trigger, then outcome taxonomy, coverage statement, and caveat in tight sentences. The return-value enumeration is denser than strictly needed, but every clause carries signal and nothing is redundant filler.

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 explain returns — and it does, listing every status and the coverage-window disclosure. Combined with a fully documented 9-parameter schema and safety annotations, an agent has everything needed to call this correctly.

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 coverage is 100%, so the schema already carries the tolerance semantics (±3 filing days, ±0.5 percentage points, the intent enum, case-insensitive ticker). The description only loosely echoes the claim components, adding no syntax or format detail beyond what the schema provides, so the baseline 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?

States a specific verb (verify/fact-check) plus resource (activist 13D claim against SEC Schedule 13D/13D-A), and the enumerated claim facets (ticker/subject, filer, percent-of-class, intent, timeframe) pin down exactly what is being checked. An agent can distinguish it from verify_13f_change, verify_8k_event, and verify_insider_purchase without opening any schema.

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?

Opens with an explicit when-to-use trigger ('verify or fact-check a claim about an activist stake or 13D filing') and gives an exclusion: passive 13G returns out_of_scope. It does not name the sibling verifier tools (e.g. verify_13f_change) as alternatives, so routing is implied rather than spelled out.

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

verify_insider_purchaseFact-check an insider-buying claim against SEC Form 4A
Read-onlyIdempotent
Inspect

Use when the user wants to verify a claim that an insider bought a stock, or to pull the purchases in one filing by accession. Pass the claim (ticker/issuer, person, amount, timeframe), or accession alone for that filing's gated purchase records. Returns confirmed, not_found, partial, out_of_scope (sales/options/grants), or out_of_coverage. Each matched filing carries transaction_date, acceptance_datetime, aff10b5One (10b5-1 flag), is_amendment/original_accession (4/A linkage), and partial_fields (reason for any null). Caveat: filing-verified — absence is reported, not guessed.

NameRequiredDescriptionDefault
endNoWindow end (ISO) if the claim is a range
dateNoClaimed date, ISO YYYY-MM-DD (matched ±3 filing days)
startNoWindow start (ISO) if the claim is a range
personNoInsider name in any order, e.g. 'Alfonso de Angoitia'
sharesNoClaimed share count
tickerNoIssuer ticker (case-insensitive), e.g. CAVA
txn_typeNoOptional; only code P purchases are covered — sale/option/grant returns out_of_scope
accessionNoSEC filing accession, e.g. 0001493152-26-040454. If you already have the exact filing, pass this to pull its gated purchase records directly — it is used alone and ignores the claim fields above.
amount_usdNoClaimed purchase value in USD (matched ±5% or ±$1)
issuer_nameNoIssuer/company name (use if you don't have the ticker)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, non-destructive and closed-world, and the description adds genuine behavior beyond that: the full status vocabulary (confirmed/not_found/partial/out_of_scope/out_of_coverage), the per-filing fields returned, and the key epistemic caveat that absence is reported rather than guessed.

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?

Two dense sentences, with the trigger condition correctly front-loaded before the return-value detail. Slightly packed with status/field enumerations, but nothing is redundant or wasteful.

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 fully carries the burden of explaining return statuses and per-filing fields, and it does so alongside the coverage caveat. An agent can call this correctly and interpret the response without further documentation.

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 every parameter, including the ±3 filing-day and ±5%/±$1 matching tolerances and the accession-alone override, is already documented in the schema. The description restates the claim-vs-accession split and the P-code-only scope but adds little syntax or meaning not already present.

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 (verify/fact-check) and resource (an insider-buying claim against SEC Form 4), plus a second mode (pull purchases by accession). It is clearly distinguishable from siblings like insider_buys and insider_cluster_buys, which list rather than adjudicate claims.

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?

Opens with an explicit trigger ('Use when the user wants to verify a claim...') and describes the alternate accession-only path. It doesn't explicitly name which sibling to reach for when the user merely wants a list of buys (insider_buys), so routing against alternatives is implied rather than spelled out.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedinsider_amendments_recent1 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"
        +}
    • Changedinsider_buys1 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"
        +}
    • Changedinsider_cluster_buys1 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. 1 tool update
    • Addedinsider_amendments_recent
  3. 1 tool update
    • Changedverify_insider_purchase1 field changed
      • changedInput schema / properties / txn_type / description
        Previous value: -"Optional; only open-market buys are covered — sale/option/grant returns out_of_scope"New value: +"Optional; only code P purchases are covered — sale/option/grant returns out_of_scope"
  4. 7 tool updates
    • Addedinsider_buys
    • Removedinsider_filing_lookup
    • Removedinsider_signals
    • Removedinsider_signals_by_date_range
    • Removedinsider_signals_by_ticker
    • Removedinsider_signals_today
    • Changedverify_insider_purchase1 field changed
      • addedInput schema / properties / accession
        Added value: +{
        +  "description": "SEC filing accession, e.g. 0001493152-26-040454. If you already have the exact filing, pass this to pull its gated purchase records directly — it is used alone and ignores the claim fields above.",
        +  "type": "string"
        +}
  5. 3 tool updates
    • Addedinsider_signals
    • Addedverify_13f_change
    • Removedverify_13f_holding
  6. 4 tool updates
    • Changedinsider_cluster_buys1 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"
        +}
    • Changedinsider_signals_by_date_range1 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"
        +}
    • Changedinsider_signals_by_ticker1 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"
        +}
    • Changedinsider_signals_today1 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"
        +}
  7. 7 tool updates
    • Changedactivist_stakes_recent3 fields changed
      • addedInput schema / properties / days
        Added value: +{
        +  "description": "Only stakes filed within the last N days.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Max stakes to return (default 50)"New value: +"Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Rows to skip before this page (pagination). Default 0.",
        +  "type": "integer"
        +}
    • Changedfederal_awards_recent3 fields changed
      • addedInput schema / properties / days
        Added value: +{
        +  "description": "Only awards signed within the last N days.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Max awards to return (default 50)"New value: +"Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Rows to skip before this page (pagination). Default 0.",
        +  "type": "integer"
        +}
    • Changedfund_position_changes3 fields changed
      • addedInput schema / properties / days
        Added value: +{
        +  "description": "Only changes filed within the last N days.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Max changes to return (default 50)"New value: +"Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Rows to skip before this page (pagination). Default 0.",
        +  "type": "integer"
        +}
    • Changedinsider_cluster_buys5 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: +[]
    • Changedinsider_signals_by_date_range4 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"
        +}
    • Changedinsider_signals_by_ticker3 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"
        +}
    • Changedinsider_signals_today5 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: +[]
  8. 1 tool update
    • Addedverify_13f_holding

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Real-time SEC Form 4 insider trading data — transactions with post-trade returns, cluster-buy signals, Form 144 early warnings, and 13F institutional holdings. 27 tools + 6 research prompts; free tier available.
    38
    104 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying SEC EDGAR for Form 4 insider trades, 8-K material events, and Schedule 13D/G ownership filings for US-listed companies, with ticker, company name, or CIK lookup.
    29 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables risk analysis of US public companies by analyzing 8-K filings and insider activity using live SEC EDGAR data.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.