TradeStar Insider
This MCP server provides read-only, filing-verified SEC/USAspending data lookup and fact-checking tools for insider trades, activist stakes, institutional holdings, 8-K events, and federal awards.
Insider buys (
insider_buys): query Form 4 code P purchases by ticker, today, or an inclusive date range, withdays/limit/offsetpaging and optional unlisted issuers; rows includefiling_url,offering_context, andsource_excerpt.Cluster buys (
insider_cluster_buys): find ≥2 insiders buying the same issuer in-window, filterable by ticker/days, flagged withuniform_price_clusterto separate offerings from independent conviction.Federal awards (
federal_awards_recent): list recently signed U.S. federal contract awards, filterable bydaysandmin_amount, each with a source award URL.Activist stakes (
activist_stakes_recent): surface recent Schedule 13D/13D-A filings on US-listed companies, filterable by ticker,min_percent, anddays, with quoted Item 4 intent (item4_excerpt).Fund position changes (
fund_position_changes): quarter-over-quarter 13F deltas (new_position, added, trimmed, exited, no_prior_quarter) by filer, change type, minimum value, and days, with as-of/filed dates, lag days, CUSIP, and filing link.Verify insider purchase (
verify_insider_purchase): fact-check a claimed insider buy (ticker/issuer, person, shares, amount, date/range) or pull a filing's gated purchases by accession; returns confirmed, not_found, partial, out_of_scope, or out_of_coverage.Verify activist 13D (
verify_activist_13d): fact-check a 13D claim (subject/ticker, filer, percent-of-class, intent, dates), with the coverage window stated.Verify 8-K event (
verify_8k_event): confirm a registrant filed an 8-K carrying specific SEC item codes (e.g. 5.02, 1.01,9.01) in a timeframe; item codes are parsed, never inferred.Verify 13F change (
verify_13f_change): check whether a fund reported a change in an issuer (name or CUSIP) in a quarter; returns held, not_held, not_found, or out_of_coverage — cannot confirm unchanged holdings.General traits: all tools are read-only, idempotent, non-destructive, no auth; every result links to its source filing, and unlinkable records are dropped rather than guessed.
Provides access to the keyed tier API methods (by_ticker, by_range, filing, fund_changes, federal_awards_recent, activist_stakes_recent) through RapidAPI by subscribing and supplying a RapidAPI key.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TradeStar Insidershow me today's filing-verified insider buy signals"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Insider Buy Signals
Verify any U.S. SEC filing claim, field-by-field, against the filing it came from. Every figure here — shares, price, dollar value, percent, stake size — traces to a parsed field in a real EDGAR filing and ships with a link to that filing on sec.gov. Records that can't be linked to a filing are dropped, never guessed: no scores, no unsourced numbers. We call this filing-verified. We also ran the obvious question — does insider buying predict returns? — as four sealed, pre-registered tests. I tried four times to prove otherwise, and four times the data said no; the full record is at https://www.tradestarinsider.com/what-we-tested. This repo is the MIT-licensed MCP server, client library, and worked examples for the TradeStar Insider API.
Website: https://www.tradestarinsider.com
MCP server (Streamable HTTP, no auth):
https://mcp.tradestarinsider.com/mcpREST (OpenAPI 3.0.2): https://api.tradestarinsider.com/v1/openapi.json
Live status: https://status.tradestarinsider.com
What we tested (negative results): https://www.tradestarinsider.com/what-we-tested
Free vs paid
The data is the same on every plan. Every row is filing-verified and links to its source on sec.gov. Plans differ only in reach and volume:
Free | Paid — $29/month | |
Calls | 100 / day | 100,000 / month |
History | last 30 days | full history to 2024-01-02 + export |
Verify any filing | full history, always free | full history |
The free tier serves the last 30 days of filings. Older filings are not hidden: a request for
an older date tells you the filing exists and is on the paid plan — it never claims that no
filing exists. The verify_* tools check any filing across the full history for free. The paid
plan is $29 a month on RapidAPI: 100,000 calls a month and full history since 2024, plus the key
for the paid MCP endpoint from /v1/mcp-key.
(On RapidAPI the free Basic plan is 100 calls a day, or 3,000 calls a month where the console allows only a monthly quota.)
Full pricing and a key: https://www.tradestarinsider.com/pricing
Related MCP server: SEC EDGAR MCP Server
Run the MCP server locally
The server is published as insider-signals-mcp — a tiny stdio proxy to the remote endpoint.
Run it with no install using uvx:
uvx insider-signals-mcpTo wire it into Claude Desktop, add this to claude_desktop_config.json:
{
"mcpServers": {
"insider-signals": {
"command": "uvx",
"args": ["insider-signals-mcp"]
}
}
}Or point any MCP client straight at the remote endpoint (no proxy needed):
https://mcp.tradestarinsider.com/mcp (Streamable HTTP, no auth). The verify tools are the
core: check an insider purchase, an activist 13D stake, an 8-K event, or a 13F holding against
its source filing.
What the data is
Five filing-verified families from SEC EDGAR (plus federal contract awards from USAspending):
Insider Form 4 purchases (SEC transaction code P) — cluster buys (two or more insiders buying the same company inside a window of seven calendar days or fewer) and buys large relative to the insider's existing holdings.
Activist Schedule 13D stakes, 13F fund position changes, and recent federal contract awards.
Code P does not by itself prove an open-market buy. A purchase filed under P can be an
IPO / offering / private-placement allocation, so every purchase record carries an
offering_context flag (true = allocation, not open-market) and clusters carry a
uniform_price_cluster flag marking a single administered price. Option exercises, 10b5-1
planned sales, and sub-threshold noise (below $50,000) are dropped. Every field we return is
parsed from a real filing and ships with its sec.gov link. Records that can't be linked to a
filing are dropped, never guessed. No scores, no unsourced numbers. We call this filing-verified.
What the data is not
It is not a prediction. We ran four pre-registered, sealed tests for whether insider buying precedes price moves over our own history, and all four returned NULL — no return edge distinguishable from base rate — so we do not claim one. The full record (question, method, sample, number, verdict per test) is public at What we tested. This is a clean, filing-verified lookup and verification layer over public purchases — you decide what they mean. It is also not real-time: ingestion is a once-daily weekday cron, so new filings surface next business day, not live.
Coverage
Insider Form 4 buys: full history 2024-01-02 → 2026-10-09 (686 U.S. trading days), no non-holiday gaps (market holidays such as Presidents' Day carry no filings and are not gaps). Read the live number any time at
/v1/health— it is the source of truth and advances every business day. Every served purchase is a filing-verified code-P purchase, never an open-market guess: records that can't be traced to a parsed SEC filing field are dropped, never inferred.Completeness: we capture 93.70% of in-window code P purchases (lower bound 87.28%); of the filings we skip, only 0.75% (95% CI 0.34–1.63%) turn out to be purchases we genuinely missed — the rest are sales, option exercises, amendments, and sub-$50k buys we exclude by design. (This recall figure is from a sealed, pre-registered 20-trading-day study, 2026-08-17 → 2026-09-14; see What we tested.)
Install
pip install insider-signals # or, from a clone: pip install -e .Zero runtime dependencies — the client uses only the Python standard library.
Quickstart (free, no key)
The free tier answers on the open discovery surface with no key and per-IP rate limiting:
from insider_signals import InsiderSignals
api = InsiderSignals() # public base URL, no key
print(api.health()["datasets"]["insider"]) # coverage days + date range
for s in api.today(): # today's filing-verified buys
print(s["ticker"], s["value_usd"], s["filing_url"])
for s in api.clusters(): # cluster buys (2+ insiders, ≤7 days)
print(s["ticker"], s["cluster_insiders"], s["cluster_notional"])
# Verify a specific claim against the filings we hold:
v = api.verify("ETRA", "ORBIMED ADVISORS LLC")
print(v["status"], v["count"]) # -> confirmed 2See examples/rest_api.py for a runnable version.
Free tier vs. keyed tier
Tier | Methods | Access |
Free (no key) |
| Open |
Keyed (RapidAPI) |
| Metered, through RapidAPI |
For the keyed tier, subscribe on RapidAPI and construct the client with your key:
api = InsiderSignals(base_url="https://<your-rapidapi-host>", rapidapi_key="...")
for s in api.by_ticker("GME"):
print(s["insider"], s["shares"], s["price_per_share"], s["filing_url"])Calling a keyed method without a key raises InsiderSignalsError with status == 403.
Worked examples — one real request and response per tool
Every response below is a real capture from the live public API (captured 2026-09-23; the
coverage_* fields shown reflect that capture date — the live coverage window now runs to
2026-10-09, read /v1/health for the current bounds).
today — today's insider buys
GET https://api.tradestarinsider.com/public/v1/signals/today{
"api_version": "v1",
"endpoint": "signals/today",
"rule2_guarantee": "Every record traces to a parsed SEC filing field and carries its source filing_url. Records without a filing link are dropped upstream and never returned.",
"count": 0,
"params": { "date": "2026-09-24" },
"signals": []
}(An empty set is normal pre-market / on a non-trading day; it repopulates the moment new filings materialize.)
clusters — cluster buys (2+ insiders, one issuer, ≤7 days)
GET https://api.tradestarinsider.com/public/v1/signals/clusters{
"api_version": "v1",
"endpoint": "signals/clusters",
"count": 1596,
"signals": [
{
"filed_date": "2026-07-22",
"ticker": "CLBK",
"issuer_name": "Columbia Financial, Inc./MD/",
"insider": "Splaine Thomas Jr",
"relationship": { "director": false, "officer": true, "officer_title": "EVP, CFO" },
"code": "P",
"shares": 50000.0, "price_per_share": 10.0, "value_usd": 500000.0,
"cluster": true, "cluster_insiders": 16, "cluster_notional": 4760370.0,
"accession": "0001339736-26-000014",
"filing_url": "https://www.sec.gov/Archives/edgar/data/2115119/000133973626000014/0001339736-26-000014-index.htm"
}
]
}verify — confirm an insider code P purchase claim
GET https://api.tradestarinsider.com/public/v1/verify?ticker=ETRA&person=ORBIMED ADVISORS LLC{
"api_version": "v1",
"endpoint": "verify",
"coverage_start": "2026-01-20", "coverage_end": "2026-09-23",
"coverage_note": "Checked SEC Form-4 code P purchases collected 2026-01-20..2026-09-23. Absence here means not in this window — not absence at the SEC.",
"status": "confirmed",
"matched": ["ticker/issuer", "person"],
"filings": [
{
"ticker": "ETRA", "issuer_name": "Electra Therapeutics, Inc.",
"insider": "ORBIMED ADVISORS LLC",
"code": "P", "shares": 1000000.0, "price_per_share": 15.0, "value_usd": 15000000.0,
"filed_date": "2026-09-23", "accession": "0000947871-26-000880",
"filing_url": "https://www.sec.gov/Archives/edgar/data/2088082/000094787126000880/0000947871-26-000880-index.htm"
}
],
"count": 2,
"message": "Confirmed: 2 matching Form-4 code P purchase filing(s)."
}A claim with no matching filing returns "status": "not_found" (in-window) or
"out_of_coverage" (outside the collected days) — never a guess.
verify_13d — confirm a Schedule 13D activist-stake claim
GET https://api.tradestarinsider.com/public/v1/verify/13d?subject_name=New Fortress Energy Inc.&filer_name=Strategic Value Partners, LLC{
"endpoint": "verify/13d",
"coverage_start": "2026-06-22", "coverage_end": "2026-09-18",
"status": "confirmed",
"filings": [
{
"filed_date": "2026-09-18", "form_type": "SCHEDULE 13D",
"subject_name": "New Fortress Energy Inc.", "subject_tickers": ["NFE", "NFEGP"],
"filer_name": "Strategic Value Partners, LLC",
"percent_of_class": 14.7, "aggregate_amount_owned": 19208710.0,
"signal": "new_13d_bare", "stated_intent": "New 13D. No activist purpose stated.",
"accession": "0001193125-26-395888",
"filing_url": "https://www.sec.gov/Archives/edgar/data/1749723/0001193125-26-395888.txt"
}
],
"count": 1,
"message": "Confirmed: 1 matching Schedule 13D/13D-A filing(s)."
}verify_8k — confirm an 8-K material-event claim
GET https://api.tradestarinsider.com/public/v1/verify/8k?cik=1650648&company_name=4D Molecular Therapeutics, Inc.{
"endpoint": "verify/8k",
"coverage_start": "2025-03-06", "coverage_end": "2026-09-22",
"status": "confirmed",
"filings": [
{
"cik": "1650648", "company_name": "4D Molecular Therapeutics, Inc.",
"accession": "0001193125-26-277563",
"filing_date": "2026-06-22", "event_date": "2026-06-17", "form": "8-K",
"items": [{ "code": "5.07", "label": "Submission of Matters to a Vote of Security Holders" }],
"filing_url": "https://www.sec.gov/Archives/edgar/data/1650648/000119312526277563/"
}
],
"count": 4,
"message": "Confirmed: 4 matching 8-K filing(s) carrying the claimed item(s)."
}verify_13f — confirm a 13F institutional-holding claim
GET https://api.tradestarinsider.com/public/v1/verify/13f?filer=BERKSHIRE HATHAWAY INC&issuer_name=ALPHABET INC&quarter=2026-06-30{
"endpoint": "verify/13f",
"coverage_start": "2024-06-30", "coverage_end": "2026-06-30",
"coverage_note": "Values are AS-OF quarter-end and up to ~45 days stale.",
"status": "held",
"filings": [
{
"filer_name": "BERKSHIRE HATHAWAY INC",
"as_of_quarter_end": "2026-06-30", "filed_date": "2026-08-14", "lag_days": 45,
"change": "added", "issuer_name": "ALPHABET INC", "title_of_class": "CAP STK CL A",
"value_usd": 28157599351, "prior_value_usd": 15600071913, "ssh_prnamt": 78791167,
"accession": "0001193125-26-352200",
"filing_url": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526352200/"
}
],
"count": 2,
"message": "Held: 2 matching 13F position(s) reported as of the covered quarter."
}Response shape
Every data route returns the same envelope; the rows live under signals, and the client's
list-returning methods hand you that list directly. The verify* methods return the full
envelope (you want the status and matched/filings fields).
MCP server (for AI assistants)
Ask an AI client (Claude and other MCP clients) for these signals directly. Open, free, per-IP rate limited — no API key, no OAuth:
claude mcp add --transport http insider-signals https://mcp.tradestarinsider.com/mcpThen ask: "Show today's insider buy signals" or "Any insider cluster buys this week? Link the
filings." See examples/mcp_client.md for the tool list and a
programmatic SDK example.
Pricing
RapidAPI is the checkout. Two plans: Basic (free) and one $29-a-month plan with 100,000 calls a
month and full history since 2024. After subscribing, call /v1/mcp-key to get your key and both
keyed URLs — the key also unlocks the paid MCP endpoint.
Hard limits, no overage — requests over the cap return 429 until the window resets. The free
discovery surface and the MCP server are open and per-IP rate limited; metered API billing runs
through RapidAPI.
Disclaimer
Information, not investment advice. Every figure is parsed from a public SEC filing and links to its source on sec.gov. Insider buying guarantees nothing — insiders are wrong plenty — but code P purchases are real money on the line.
License
MIT. Changelog: CHANGELOG.md.
Available Tools
9 toolsactivist_stakes_recentRecent activist hedge-fund stakes (SEC Schedule 13D)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Only stakes filed within the last N days. | |
| limit | No | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. | |
| offset | No | Rows to skip before this page (pagination). Default 0. | |
| ticker | No | Filter to one subject ticker (case-insensitive), e.g. DH | |
| min_percent | No | Only stakes at or above this percent-of-class |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Only awards signed within the last N days. | |
| limit | No | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. | |
| offset | No | Rows to skip before this page (pagination). Default 0. | |
| min_amount | No | Only awards at or above this USD amount |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Only changes filed within the last N days. | |
| filer | No | Filter to one fund by name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK | |
| limit | No | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. | |
| offset | No | Rows to skip before this page (pagination). Default 0. | |
| change_type | No | Only this kind of quarter-over-quarter change | |
| min_value_usd | No | Only positions at or above this current value in WHOLE US dollars |
TDQS
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.
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.
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.
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.
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.
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_buysInsider buys by ticker, today, or a date range (SEC Form 4)ARead-onlyIdempotentInspect
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 (true = IPO/offering, not open-market) and source_excerpt: the parsed filing fields, quoted from the filing as data, never derived. Caveat: only purchases that pass the signal filter are returned; code P is not proof of a buy.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive range end, ISO YYYY-MM-DD. Give with `start` for a date range. | |
| days | No | Only rows filed within the last N days (relative to today). | |
| limit | No | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. | |
| start | No | Inclusive range start, ISO YYYY-MM-DD. Give with `end` for a date range. | |
| offset | No | Rows to skip before this page (pagination). Default 0. | |
| ticker | No | Case-insensitive exact ticker filter, e.g. DKS. | |
| include_unlisted | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantive context beyond them: the signal-filter caveat ('only purchases that pass the signal filter are returned; code P is not proof of a buy'), the meaning of offering_context, and the fact that source_excerpt is quoted filing data, never derived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph, front-loaded with the usage trigger followed by parameterization, return-field notes, and the caveat. Every sentence carries information, though the packing is heavy enough that it borders on overload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains the returned row fields (filing_url, offering_context, source_excerpt), the default-time behavior, and the filtering caveat, and the schema itself covers pagination. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above it by adding behavioral meaning to the parameters, notably that supplying neither ticker nor start/end defaults to today's buys, that `days` narrows, and that `include_unlisted` admits non-listed issuers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('which insiders bought a stock', 'Form 4 buys') with clear scope. It does not, however, explicitly differentiate itself from the closely related sibling insider_cluster_buys, leaving some ambiguity for an agent choosing between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit 'Use when...' trigger covering the three request shapes (specific ticker, ticker-level buying check, date range) and then explains how to parameterize each case. It stops short of stating when NOT to use it or naming a sibling alternative, so it is strong but not fully routing.
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)ARead-onlyIdempotentInspect
Use when the user asks about cluster buying, multiple insiders buying the same company, or the strongest insider-buying signal. Returns only clusters (>=2 insiders buying one issuer in-window), newest first; days/ticker narrow. Each row carries its source filing_url, offering_context, and uniform_price_cluster (true = >=3 insiders bought at the IDENTICAL price same day — an offering/conversion, not independent conviction). Caveat: genuine clusters rank above uniform-price ones; only purchases that pass the signal filter are returned; code P alone is not proof of an open-market buy.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Only rows filed within the last N days (relative to today). | |
| limit | No | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. | |
| offset | No | Rows to skip before this page (pagination). Default 0. | |
| ticker | No | Case-insensitive exact ticker filter, e.g. DKS. | |
| include_unlisted | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial behavioral context well beyond them: newest-first ordering, the >=2-insider cluster definition, the meaning of uniform_price_cluster (offering/conversion, not conviction), the signal filter, and the warning that code P alone is not proof of an open-market buy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use trigger, then scope, then row payload, then caveats. Dense and semicolon-packed but every clause carries information; only the final code-P caveat is slightly tangential to invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only filtered-list tool with no output schema, the description covers invocation context, filter behavior, pagination hints, the shape of returned rows, and critical interpretation caveats. Nothing an agent needs to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already documented in the schema. The description only restates that `days`/`ticker` narrow the results, adding no syntax or format detail; the richer hints about offering_context and uniform_price_cluster describe returned fields, not parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (insider cluster buys on SEC Form 4) and precisely defines scope: returns ONLY clusters of >=2 insiders buying one issuer in-window. This distinguishes it from the individual-buy sibling insider_buys without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with explicit use triggers (cluster buying, multiple insiders buying the same company, strongest insider-buying signal) and gives an interpretive caveat that genuine clusters rank above uniform-price ones. It does not, however, explicitly name insider_buys or verify_insider_purchase as the alternative to choose for single-buyer queries.
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-HRARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Quarter-window end (ISO) if the claim spans quarters | |
| cusip | No | 9-char CUSIP of the held security — give this or issuer_name. (ticker is never accepted: 13F carries no authoritative ticker) | |
| filer | No | Fund/institution name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK — REQUIRED | |
| start | No | Quarter-window start (ISO) if the claim spans quarters | |
| quarter | No | As-of quarter-end the claim is about, ISO YYYY-MM-DD (e.g. '2026-06-30') | |
| issuer_name | No | Held company/issuer name (e.g. 'Apple') — give this or cusip |
TDQS
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.
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.
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.
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.
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.
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-KARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Registrant CIK (leading zeros ignored), e.g. 320193 | |
| end | No | Window end (ISO) if the claim is a range | |
| date | No | Claimed filing date, ISO YYYY-MM-DD (matched ±3 filing days) | |
| items | No | Claimed SEC 8-K item code(s), comma-separated (e.g. '5.02' or '1.01,9.01') — checked against the filing | |
| start | No | Window start (ISO) if the claim is a range | |
| accession | No | SEC filing accession, e.g. 0001193125-26-389400 | |
| company_name | No | Registrant name substring (case-insensitive), e.g. 'Apple' |
TDQS
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.
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.
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.
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.
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.
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-AARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Window end (ISO) if the claim is a range | |
| date | No | Claimed filed date, ISO YYYY-MM-DD (matched ±3 filing days) | |
| start | No | Window start (ISO) if the claim is a range | |
| intent | No | Optional pre-registered intent: I1 control/take-private, I2 board/proxy, I3 strategic/value | |
| ticker | No | Subject-company ticker (case-insensitive), e.g. DH | |
| form_type | No | Optional; only activist 13D/13D-A is covered — a passive 13G returns out_of_scope | |
| filer_name | No | Activist filer name in any order, e.g. 'Elliott Management' | |
| subject_name | No | Subject/target company name (use if you don't have the ticker) | |
| percent_of_class | No | Claimed percent-of-class owned (matched ±0.5 percentage points) |
TDQS
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.
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.
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.
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.
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.
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 4ARead-onlyIdempotentInspect
Use when the user wants to verify or fact-check 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 pass accession alone to fetch that filing's gated purchase records. Returns confirmed (with source filing + link), not_found, partial (itemised claimed-vs-filed), out_of_scope (sales/options/grants), or out_of_coverage. Caveat: filing-verified — absence is reported as absence, never estimated or guessed.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Window end (ISO) if the claim is a range | |
| date | No | Claimed date, ISO YYYY-MM-DD (matched ±3 filing days) | |
| start | No | Window start (ISO) if the claim is a range | |
| person | No | Insider name in any order, e.g. 'Alfonso de Angoitia' | |
| shares | No | Claimed share count | |
| ticker | No | Issuer ticker (case-insensitive), e.g. CAVA | |
| txn_type | No | Optional; only open-market buys are covered — sale/option/grant returns out_of_scope | |
| accession | No | 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. | |
| amount_usd | No | Claimed purchase value in USD (matched ±5% or ±$1) | |
| issuer_name | No | Issuer/company name (use if you don't have the ticker) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, idempotent, non-destructive), and the description goes further by enumerating the return statuses (confirmed/not_found/partial/out_of_scope/out_of_coverage) and stating the epistemic caveat that absence is reported as absence, never estimated. That is real behavior disclosure beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, then the two invocation modes, then the return vocabulary and caveat. Dense but each sentence carries information; the long parenthetical status list is slightly heavy but justified given no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 enumerates result statuses and the coverage limitation, and covers both invocation modes for a 10-param, zero-required tool. An agent has enough to call it correctly without further guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter including matching tolerances (±3 filing days, ±5%). The description groups the claim fields conceptually and repeats the accession-alone semantics, adding only marginal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: fact-checking an insider-buying claim against SEC Form 4, with two distinct modes (claim input vs. accession fetch). This clearly separates it from sibling list-style tools like insider_buys and from the other verify_* fact-checkers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when the user wants to verify or fact-check a claim..." gives clear trigger context, and the description states the alternative access path (pass accession alone). It also pre-empts out-of-scope inputs (sales/options/grants), but never names the sibling tools an agent should pick instead for raw buy lists.
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.
9 tool updates
v1.1.0- Added
insider_buys - Changed
insider_cluster_buys1 field changed- added
Input schema / properties / include_unlistedAdded 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" +}
- Removed
insider_filing_lookup - Removed
insider_signals_by_date_range - Removed
insider_signals_by_ticker - Removed
insider_signals_today - Added
verify_13f_change - Removed
verify_13f_holding - Changed
verify_insider_purchase1 field changed- added
Input schema / properties / accessionAdded 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" +}
12 tool updates
v1.0.0- First observed
activist_stakes_recent - First observed
federal_awards_recent - First observed
fund_position_changes - First observed
insider_cluster_buys - First observed
insider_filing_lookup - First observed
insider_signals_by_date_range - First observed
insider_signals_by_ticker - First observed
insider_signals_today - First observed
verify_13f_holding - First observed
verify_8k_event - First observed
verify_activist_13d - First observed
verify_insider_purchase
TDQS
Scored across 9 tools
The retrieval tools target distinct filing types (insider buys, clusters, federal awards, 13D stakes, 13F changes) and the four verify_* tools each have a clearly different subject. The main risk is overlap between insider_buys and insider_cluster_buys (cluster is a subset of buys) and between fund_position_changes and verify_13f_change, but the descriptions draw the boundaries explicitly.
All names are snake_case and the verify_ prefix forms a clean, predictable pattern across the four verification tools. The retrieval tools are slightly less uniform (insider_buys vs federal_awards_recent vs fund_position_changes) but remain readable and coherent as a topic-based group.
Nine tools is well within the ideal 3-15 range, and each earns its place: five discovery tools for distinct filing types plus four matching verifiers. No redundant or filler tools.
The surface covers discovery and verification across insider, activist, 13F, and 8-K domains, which is strong lifecycle coverage for a filing-intelligence server. Minor gaps: 8-K has verification but no discovery counterpart, and there is no sell-side/13G or general filing-search operation, though agents can work around these.
Maintenance
Related MCP Connectors
SEC insider intelligence: trades, 8-K events, planned sales, activist stakes - one entity graph.
SEC EDGAR filings for AI agents: company lookup, filings, financials, insider trades. No keys.
SEC EDGAR filings for AI agents: company lookup, filings, financials, insider trades. No keys.
SEC EDGAR financials, insider trading, and economic data for AI agents. US GAAP + IFRS.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to SEC EDGAR filings for retrieving company data, financial statements, and insider transactions with exact precision.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables to search and retrieve SEC EDGAR filings, insider transactions, major shareholders, and executive compensation data through natural language.13 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to research US public company filings, financials, and insider transactions using SEC EDGAR data, with no API keys required. Provides tools for company lookup, recent filings, full-text search, financial facts, and insider activity.5MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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.32 npm1MIT