Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.cyanheads/secedgar-mcp-server

REMOTE · SECEDGAR.CASEYJHAND.COM · 2 COMPONENTS · SCANNED AUG 3

Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.

+4 this week 70 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 16 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 8359 tokens (~464/item across 18 items; 16 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · secedgar.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-secedgar-mcp-server https://secedgar.caseyjhand.com/mcp
# ~/.codex/config.toml
[mcp_servers.cyanheads-secedgar-mcp-server]
url = "https://secedgar.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-secedgar-mcp-server": {
      "type": "remote",
      "url": "https://secedgar.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-secedgar-mcp-server --url https://secedgar.caseyjhand.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-secedgar-mcp-server:
    url: "https://secedgar.caseyjhand.com/mcp"
// mcp.json
{
  "mcpServers": {
    "cyanheads-secedgar-mcp-server": {
      "type": "http",
      "url": "https://secedgar.caseyjhand.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +2
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “secedgar_get_institutional_holdings” rewrote its description, which is the text the model reads security
    • Schema quality: 395 → 464 functional
    • Schema quality: 5532 → 6731 functional
    • Stability: unverified → 0.03 functional
    • Schema quality: good → excellent functional
    • Server version: 0.13.1 → 0.14.0 functional
    • New tool “secedgar_get_material_events” functional
    • New tool “secedgar_find_holders” functional
    • “secedgar_get_institutional_holdings” reworded the description of “ticker_or_cik” cosmetic
  • 26 Jul 26 64

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://secedgar.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 7 Jul 2026 5 Oct 2026 ECDSA 256 ECDSA-SHA256 5aad900eb2055a0b0ea55912ec19680c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC secure

Validation of secedgar.caseyjhand.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
secedgar.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://secedgar.caseyjhand.com/mcp Verified 200
http (plaintext) http://secedgar.caseyjhand.com/mcp HTTPS enforced 301 https://secedgar.caseyjhand.com/mcp
MCP tools — 16 exposed · ~7,807 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
secedgar_company_search ~301

Find companies and retrieve entity info with optional recent filings. Entry point for most EDGAR workflows — resolves tickers, names, or CIKs to entity details, with accession numbers in the result feeding secedgar_get_filing for document content.

NameTypeReqDescription
filed_afterOnly include filings filed on or after this date (YYYY-MM-DD). A date filter routes the scan into the older submissions archive pages, so it reaches filings that predate the ~1000-filing recent windo…
filed_beforeOnly include filings filed on or before this date (YYYY-MM-DD). Use alone or with filed_after; together they bound the archive-page scan.
filing_limitintegerMaximum number of filings to return in the inline list.
form_typesarrayFilter filings to specific form types (e.g., ["10-K", "10-Q", "8-K"]). Without this, returns all form types.
include_filingsbooleanInclude recent filings in the response. Set to false for entity-info-only lookups.
querystringyesCompany ticker symbol (e.g., "AAPL", "VOO"), name (e.g., "Apple"), or CIK number (e.g., "320193"). Ticker is the fastest lookup and works for equities, ETFs, and mutual funds. Name search matches cur…
NameTypeReqDescription
cikstringyesCentral Index Key, zero-padded to 10 digits.
class_idstringSEC fund class ID (e.g. "C000092055"). Present when the query resolved via a fund ticker (ETF or mutual fund).
datasetobjectCanvas dataframe holding the full filtered filing history (recent + archive pages), registered only when the scan reached beyond the recent window and the history exceeds filing_limit. Query the comp…
exchangesarrayyesExchanges where listed.
filingsarrayRecent filings, filtered by form_types if specified.
fiscal_year_endstringFiscal year end (MM-DD format, e.g., "09-26"). Absent for filers SEC records no fiscal year end for (e.g. private or pre-IPO entities).
history_scanned_throughstringOldest filing date reached by the scan (YYYY-MM-DD). Filings older than this were not examined: the recent window caps at ~1000 filings, and older filings live in archive pages fetched only when a da…
namestringyesSEC-conformed company name.
noticestringGuidance when include_filings=true but no filings matched the form_types filter.
series_idstringSEC fund series ID (e.g. "S000002839"). Present when the query resolved via a fund ticker (ETF or mutual fund).
sicstringyesSIC industry code.
sic_descriptionstringyesHuman-readable SIC description.
state_of_incorporationstringState of incorporation (US two-letter code, e.g. "DE"). Omitted for some entities, including many foreign filers and individuals.
tickersarrayyesAssociated ticker symbols.
total_filingsnumberTotal filings matching the filter across everything scanned (recent window + any archive pages), which may exceed filing_limit and the inline list.

No examples provided.

secedgar_compare_companies ~536

Compare 2-10 named companies across 1-8 XBRL concepts, aligned on calendar periods. This is the middle shape between secedgar_get_financials (one company, one concept, full history) and secedgar_fetch_frames (one concept, one period, every reporting company) — reach for it when the question names the companies. One companyfacts read per company, resolved through the same frame dedup and tag priority as secedgar_get_financials so the numbers agree. Balance-sheet and entity-info concepts are filed as point-in-time values and align on the calendar year (annual) or quarter (quarterly) their snapshot falls in, so they sit in the same matrix as income-statement lines. The inline matrix covers the most recent periods up to `periods`, trimmed further when companies x concepts x periods is too large to return in one response; the full aligned series is materialized as df_<id> for growth rates and spreads via secedgar_dataframe_query. A company that fails to resolve is reported in failed_companies and the comparison proceeds with the rest, and a company that does not report a concept is reported in gaps with the tags that were tried — never interpolated or zero-filled. Off-calendar filers and unit mismatches are surfaced in caveats rather than silently mixed.

NameTypeReqDescription
companiesarrayyesCompanies to compare, as ticker symbols (preferred) or CIK numbers. A company that does not resolve is reported in failed_companies and the rest of the comparison still runs.
conceptsarrayyesConcepts to compare — friendly names like "revenue" or "net_income" (discover them with secedgar_search_concepts) or raw XBRL tags.
period_typestringAlign on full calendar years (annual) or calendar quarters (quarterly). Quarterly comparisons of off-calendar filers are missing at least one calendar quarter per year — see caveats.
periodsintegerUpper bound on how many recent periods the inline matrix covers, newest first — not a guarantee. The matrix is companies x concepts x periods cells, and the inline window drops further older periods…
taxonomystringXBRL taxonomy to resolve concepts under. Use ifrs-full only when every company in the list reports under IFRS; mixing IFRS and US GAAP filers in one call resolves them all under the same taxonomy.
NameTypeReqDescription
capnumberThe periods cap applied.
caveatsarrayyesComparability warnings: a filer missing one or two calendar quarters from the frame-tagged series, a concept whose values stop at least two full years behind the rest of that company's reporting (eit…
cellsarrayyesInline matrix values, covering the periods listed in periods[].
companiesarrayyesCompanies included in the comparison.
conceptsarrayyesConcepts covered, in the order supplied.
datasetobjectCanvas dataframe holding the full aligned series across every period, not just the inline window. Columns match cells[]. Absent when canvas is unavailable.
failed_companiesarrayyesCompanies excluded from the matrix. The comparison proceeds with the rest rather than failing the whole call.
gapsarrayyesCompany-concept pairs with no data. Deliberately explicit — a missing value is never interpolated or zero-filled.
period_typestringyesPeriod alignment used, echoed from input.
periodsarrayyesCalendar period keys covered by the inline matrix, newest first. Shorter than the requested periods when the cell count forced the window to shrink — the enrichment trailer reports the drop.
shownnumberNumber of periods shown inline.
taxonomystringyesTaxonomy the concepts were resolved under, echoed from input.
truncatedbooleanTrue when the aligned series has more periods than the inline matrix shows.

No examples provided.

secedgar_dataframe_describe ~127

List dataframes (df_XXXXX_XXXXX) materialized by secedgar_fetch_frames, secedgar_search_filings, secedgar_get_financials, secedgar_get_insider_transactions, and secedgar_get_institutional_holdings. Each entry surfaces source tool, query parameters, creation/expiry timestamps, row count, column schema, and whether the dataframe is truncated relative to the upstream source.

NameTypeReqDescription
namestringOptional table name (df_XXXXX_XXXXX) to describe a single dataframe. Omit to list all dataframes.
NameTypeReqDescription
dataframesarrayyesActive dataframes for this tenant, newest first. Empty when none are registered.

No examples provided.

secedgar_dataframe_query ~377

Run a single-statement SELECT against the canvas dataframes registered by secedgar_fetch_frames, secedgar_search_filings, and secedgar_get_financials. Read-only: writes, DDL, DROP, COPY, PRAGMA, ATTACH, and external-file table functions are rejected. System catalogs (information_schema, pg_catalog, sqlite_master, duckdb_*) are denied — list dataframes via secedgar_dataframe_describe. Optional register_as chains the result as a new dataframe with a fresh TTL.

NameTypeReqDescription
previewintegerRows to include in the immediate response. Defaults to the row limit. Set lower (e.g., 50) when chaining via register_as and only a sample is needed inline.
register_asstringWhen set, persist the result as a new dataframe under this name (must match df_XXXXX_XXXXX shape, or pass a fresh df_<id> generated by the agent). Fresh TTL window — not inherited from the parents in…
row_limitintegerHard cap on rows materialized in the response. Default 1000, max 10000. The full result lives on-canvas under register_as when provided — do not raise this to keep large results.
sqlstringyesSingle-statement SELECT against df_<id> tables on the shared canvas. Standard DuckDB SQL — joins, aggregates, window functions, CTEs all supported. Reference dataframes by the names returned in fetch…
NameTypeReqDescription
columnsarrayyesColumn names in projection order.
expires_atstringISO 8601 expiry timestamp for the newly registered dataframe, when applicable.
noticestringGuidance when the query returned no rows, or when results were capped.
registered_asstringSet when `register_as` was supplied and the new dataframe was materialized.
row_countnumberyesTotal rows the query produced (may exceed `rows.length` when capped).
rowsarrayyesMaterialized rows, bounded by `preview` / `row_limit`.

No examples provided.

secedgar_fetch_frames ~555

Fetch SEC XBRL frames for one concept × one period across all reporting companies. Inline response returns a page of the ranked companies — start at the top or pass offset/next_offset to walk further down the ranking; the full frames response (all reporters) is materialized as df_<id> when a canvas is available, queryable via secedgar_dataframe_query. Accepts friendly names like "revenue" or "assets" (discover via secedgar_search_concepts) or raw XBRL tags. One call hits one XBRL tag — when a friendly name maps to multiple same-meaning tags, the response's `unqueried_tags` lists the others; call again per tag and UNION/COALESCE in SQL with an analysis-specific priority (e.g. SalesRevenueGoodsNet is goods-only). The response's `related_tags` separately flags alternate-DEFINITION tags a meaningful share of filers use as their primary line (e.g. cash incl. restricted cash, equity incl. noncontrolling interest) — a whole-universe screen on the base tag silently omits those filers; query them separately, but do not blindly union (the semantics differ). Response includes `value_distribution` and `period_end_range` to flag XBRL scale-factor anomalies and fiscal-year mixing.

NameTypeReqDescription
conceptstringyesFinancial concept — same friendly names as secedgar_get_financials (e.g., "revenue", "assets", "eps_basic") or raw XBRL tag.
limitintegerNumber of companies to return.
offsetintegerRank to start the page at, 0-based, over the sorted frame. Pass the next_offset from the previous response to read the next page — the ranked list is fetched whole and sliced, so paging is stable and…
periodstringyesCalendar period. Use duration periods (no I suffix) for income/cash-flow items: "CY2023" (full year), "CY2024Q2" (single quarter). Use instant periods (I suffix) for balance-sheet items: "CY2023Q4I"…
sortstringSort direction. "desc" for highest values first (typical for revenue, assets). "asc" for lowest values.
unitstringUnit of measure. Use "USD-per-shares" (or equivalently "USD/shares") for EPS, "shares" for share counts, "pure" for ratios. Ignored when concept resolves to a friendly name with a known unit.
NameTypeReqDescription
capnumberThe limit cap applied.
caveatsarrayyesData-completeness warnings specific to this query. Currently populated for duration periods 'CY####Q[1-4]', where SEC XBRL omits filers' fiscal Q4 (reported only as the 10-K residual) — affected file…
conceptstringyesXBRL tag the data was actually fetched against (after resolving any friendly name).
dataarrayyesRanked companies for this metric.
datasetobjectCanvas dataframe handle holding the full frames response. Absent when canvas is unavailable or materialization failed.
labelstringyesHuman-readable concept label.
next_offsetnumberOffset to pass on the next call to continue down the ranking. Absent on the last page (no companies remain past this one).
noticestringGuidance when the requested offset lands past the end of the ranked list.
offsetnumberyesRank the returned page starts at, 0-based — the effective offset applied.
periodstringyesCalendar period the data was fetched for, echoed from input.
period_end_rangeobjectyesRange of period_end dates across the frame. SEC normalizes to calendar periods but filers report against their own fiscal year-ends, so a "CY2023" duration frame can contain period_ends from 2023-01-…
related_tagsarrayyesAlternate-DEFINITION XBRL tags (distinct from same-meaning `unqueried_tags`) that a meaningful share of filers use as their primary line for this metric — e.g. `cash` filers reporting `CashCashEquiva…
shownnumberNumber of companies shown inline.
total_companiesnumberyesTotal companies reporting this metric for this period.
truncatedbooleanTrue when the inline data[] was capped by limit.
unitstringyesUnit of measure used for the lookup (always normalized to dashed form, e.g. "USD-per-shares").
unqueried_tagsarrayyesOther same-meaning XBRL tags in the friendly-name mapping that this call did NOT query (historical/variant spellings of the same metric). Empty for raw tags or single-tag concepts — for alternate-DEF…
value_distributionobjectyesDistribution stats across the full frame, computed during materialization. Use `max_to_p95_ratio` as the primary outlier signal — it catches scale-factor anomalies even when median is 0 or negative.

No examples provided.

secedgar_find_holders ~555

Find which institutional managers reported holding an issuer, by searching 13F-HR information tables for one reporting quarter. This is the reverse direction of secedgar_get_institutional_holdings: that tool takes a manager and returns its portfolio, this one takes an issuer and returns its managers — pass a returned filer_cik plus the same quarter to read the actual position. Searching by cusip is the precise path, matching the identifier the information table itself carries; without it the issuer name is matched as a phrase against the filing text, which both over-matches (unrelated issuers sharing a word) and under-matches (managers writing the name differently), so prefer cusip whenever one is known. A CUSIP cannot be derived from a ticker here — read one off any 13F information table returned by secedgar_get_institutional_holdings. The returned list is unranked: the search index scores by text relevance, which carries no signal about position size, and no ordering by shares or market value is available without opening each filing. Managers holding under $100M in 13(f) securities are exempt from filing at all.

NameTypeReqDescription
cusipThe issuer's 9-character CUSIP (e.g. "037833100" for Apple common stock; foreign issuers use a CINS starting with a letter, e.g. "H1467J104"). The precise match key — information tables identify ever…
issuerstringyesThe portfolio company whose holders you want — a ticker ("AAPL"), a 10-digit CIK ("0000320193"), or a company name. Without cusip, this resolves to the company's EDGAR-conformed name and that name is…
limitintegerFiler rows returned inline. The full fetched set (up to 500 rows) is materialized as a dataframe when a canvas is available. Default 20.
quarterReporting quarter to search, "YYYY-QN" (e.g. "2026-Q1"). Omit for the newest quarter whose 45-day filing deadline has passed — the applied quarter and its filing window are echoed in the response. A…
NameTypeReqDescription
capnumberThe limit cap applied.
datasetobjectCanvas dataframe holding every fetched filer row, each carrying the issuer key and quarter so it joins across issuers and quarters. Absent when the result fits inline, canvas is unavailable, or mater…
fetchednumberyesFilings retrieved from the index, capped by the fetch budget of 500. Equals total_filings when the whole window fit inside the budget.
filed_fromstringyesStart of the filing window searched (YYYY-MM-DD).
filed_tostringyesEnd of the filing window searched (YYYY-MM-DD).
holdersarrayyesOne page of filers, capped at limit. Order carries no position-size meaning — see the ordering note.
holders_in_quarternumberyesDistinct managers among the fetched filings reporting this quarter as their period — the set paged by limit and materialized on the dataframe. Lower than fetched by the filings dropped as amendments…
issuerstringyesThe issuer input, echoed.
noticestringGuidance when the search returned no filers — names the likely cause.
orderingstringyesHow the holder list is ordered, and what that ordering does not mean.
quarterstringyesReporting quarter searched, "YYYY-QN" — the requested one, or the applied default.
resolved_issuer_cikstringCIK of the resolved issuer, zero-padded to 10 digits. Absent when cusip was supplied.
resolved_issuer_namestringEDGAR-conformed company name the issuer resolved to, and the phrase that was searched. Absent when cusip was supplied (no company lookup runs).
search_keystringyesThe exact term searched — the CUSIP, or the quoted phrase.
search_modestringyesWhich key matched the information tables. "cusip" matches the identifier the table itself carries; "name" phrase-matches the filing text and is looser in both directions.
shownnumberNumber of filers shown inline.
total_filingsnumberyesTotal 13F-HR filings matching the search key inside the filing window, as reported by the index. A slight over-count of this quarter's holders on two counts, both of which the returned rows correct f…
total_is_exactbooleanyesFalse when total_filings is a lower bound (the index capped the count).
truncatedbooleanTrue when the inline holders list was capped.

No examples provided.

secedgar_get_beneficial_owners ~549

List the 5%-and-over beneficial owners of a public company, parsed from the structured SCHEDULE 13D and SCHEDULE 13G filings made about it. The input is the ISSUER — the company being held — which is the opposite direction from secedgar_get_institutional_holdings, where the input is the manager. 13D is the activist form and carries the filer's stated purpose of the transaction; 13G is the passive form and has no purpose field at all, which is the substantive difference between a stake that intends to influence control and one that does not. Every filing is returned with each reporting person listed separately, because voting power, dispositive power, and percent of class are reported per person even on a joint filing where several funds and their controlling principal report overlapping shares — summing those percentages double-counts the same position. Coverage starts at 2024-12-18, when SEC replaced the legacy SC 13D / SC 13G text filings with this XML format; earlier stakes are readable but not parseable, and the response reports how many of them the issuer has. The full parsed set is materialized as df_<id> when a canvas is available, one row per reporting person, so it joins against the insider and 13F dataframes on issuer CIK.

NameTypeReqDescription
form_kindstringWhich schedule to return. "13D" is the activist form, filed by a holder that may seek to influence control and carrying a stated purpose of transaction. "13G" is the passive form, available to instit…
include_amendmentsbooleanWhether to include amendments (SCHEDULE 13D/A, SCHEDULE 13G/A). Amendments carry the current position and are how an ongoing stake is tracked, so they are included by default. Set false to see only f…
issuerstringyesThe company whose blockholders you want — a ticker ("AAPL"), a 10-digit CIK ("0000320193"), or a company name. This is the subject company of the schedule, not the investor filing it; passing an inve…
limitintegerNumber of filings to fetch and parse, newest first. Each filing is a separate document fetch, so this is the cost of the call as well as its depth. Default 10; a widely-held company can have dozens o…
NameTypeReqDescription
capnumberThe limit cap applied.
datasetobjectCanvas dataframe holding one row per reporting person across every parsed filing, each row carrying the issuer, form, accession, and dates alongside the person's powers. Joins against the insider and…
filingsarrayyesBlockholder filings, newest first, capped at limit.
filings_parsednumberyesFilings actually fetched and parsed — total_structured_filings capped by limit.
form_kindstringyesThe schedule filter applied — the requested value, or the default "all".
issuerstringyesThe issuer input, echoed.
issuer_cikstringyesCIK of the resolved issuer, zero-padded to 10 digits.
issuer_namestringyesEDGAR-conformed name of the resolved issuer.
legacy_filings_before_coveragenumberyesLegacy SC 13D / SC 13G filings in the issuer's recent submissions window — pre-2024-12-18 stakes this tool cannot parse. Reach them with secedgar_search_filings and read them with secedgar_get_filing…
noticestringGuidance when no filings matched — names the coverage boundary and the fallback.
shownnumberNumber of filings returned.
structured_coverage_fromstringyesFirst filing date on which SEC required this XML format (YYYY-MM-DD). Blockholder filings before it exist but are not parseable into this schema.
total_structured_filingsnumberyesStructured SCHEDULE 13D/13G filings matching the form filter in the issuer's recent submissions window, before the limit. The population the returned filings are the newest slice of.
truncatedbooleanTrue when filings were capped by limit.

No examples provided.

secedgar_get_filing ~574

Fetch a specific filing's metadata and document content by accession number. Returns the primary document as readable text. Use offset/next_offset for multi-page access to large filings (10-K, S-1 can exceed 1M chars): pass the next_offset from a truncated response to read the next page. Use section to jump directly to a heading (e.g. 'risk factors', 'item 7') without needing an offset.

NameTypeReqDescription
accession_numberstringyesFiling accession number in either format: "0000320193-23-000106" (dashes) or "000032019323000106" (no dashes). Obtained from secedgar_company_search or secedgar_search_filings results.
cikstringCompany CIK, digits only (resolve via secedgar_company_search if you have a ticker or name). Optional but recommended — speeds up archive lookup. If omitted, likely filing CIKs are inferred from SEC…
content_limitintegerMaximum characters of document text to return per page. 10-K filings can exceed 500,000 characters; S-1/A can exceed 1,000,000. Default 50,000 captures ~12,000 words (typically business overview, ris…
documentstringSpecific document filename within the filing (e.g., "ex-21.htm" for subsidiaries list). Default: the primary document. Available documents are listed in the response metadata under documents; entries…
include_xbrlbooleanInclude XBRL viewer artifacts and machine-readable taxonomy files (R*.htm fragments, *_cal/_def/_lab/_pre.xml linkbases, *_htm.xml inline instance, *.xsd schemas, MetaLinks.json, FilingSummary.xml, S…
offsetintegerCharacter offset into the extracted document text. Pass next_offset from a truncated response to continue reading the next page. Default 0 reads from the beginning.
sectionstringJump to a named section by case-insensitive substring match against detected headings (e.g. 'risk factors', 'item 7', 'certain relationships'). Takes precedence over offset when both are provided. On…
NameTypeReqDescription
accession_numberstringyesFiling accession number, normalized to dash format.
cikstringyesFiling entity CIK, zero-padded to 10 digits.
company_namestringFiling entity name. Absent if the CIK did not resolve to a known entity.
contentstringyesDocument text content for this page window.
content_total_lengthnumberyesFull document length before any truncation.
content_truncatedbooleanyesTrue if content was truncated at content_limit.
documentsobjectyesFiling documents grouped by category. Every name is a valid document input EXCEPT entries carrying binary: true — scanned pages, PDFs, packaged archives and spreadsheets, which hold no text and are r…
filing_datestringDate the filing was submitted (YYYY-MM-DD). Absent under the same conditions as form.
filing_urlstringyesDirect URL to the filing on SEC.gov.
formstringForm type (e.g., "10-K", "10-Q"). Absent for filings older than the last ~1,000 the company has filed (SEC does not surface metadata for those without a separate fetch).
next_offsetnumberCharacter offset to pass as offset on the next call to continue reading. Only present when the response was truncated. Calling agents should follow this until content_truncated is false.
outlinearrayDocument outline — detected headings with their character offsets. Present on the first page of a truncated response (offset=0, no section). Use a heading offset as offset, or pass heading text as se…
period_endingstringPeriod the filing reports on (YYYY-MM-DD). Absent under the same conditions as form.
primary_documentstringyesFilename of the filing's actual primary document (e.g., the 10-K HTML file).
requested_documentstringFilename of the specific document requested via the document param. Only present when document differs from primary_document.

No examples provided.

secedgar_get_financials ~321

Get historical XBRL financial data for a company. Accepts friendly concept names (e.g., "revenue", "net_income", "assets") or raw XBRL tags. Discover available friendly names with secedgar_search_concepts. Handles historical tag changes and deduplicates data automatically.

NameTypeReqDescription
companystringyesTicker symbol (e.g., "AAPL") or CIK number. Ticker is preferred.
conceptstringyesFinancial concept — friendly name (e.g., "revenue", "net_income", "assets", "eps_diluted") or raw XBRL tag (e.g., "AccountsPayableCurrent"). Friendly names auto-resolve to the correct XBRL tags and h…
limitintegerCap the inline data[] to the most-recent N periods (the series is newest-first). The full series is always registered to the dataframe, so older periods stay queryable via secedgar_dataframe_query. O…
period_typestringFilter to annual (FY) or quarterly (Q1-Q4) data. "all" returns both. When omitted, defaults to "annual"; instant (balance-sheet) concepts automatically fall back to returning the full series on the f…
taxonomystringXBRL taxonomy. us-gaap for US companies, ifrs-full for foreign filers, dei for entity info (shares outstanding).
NameTypeReqDescription
capnumberThe limit cap applied.
caveatsarrayData-completeness warnings about the returned series. Two kinds. On quarterly results, one entry when one or two calendar quarters are absent from every recent qualifying year — SEC reports a filer's…
cikstringyesResolved CIK, zero-padded to 10 digits.
companystringyesResolved entity name (SEC-conformed).
conceptstringyesXBRL tag name used.
dataarrayyesDeduplicated time series, newest first.
datasetobjectCanvas dataframe handle holding the same time series. Use for cross-company JOINs via secedgar_dataframe_query. The source-filing fiscal keys are materialized as source_filing_fy/source_filing_fp — o…
descriptionstringXBRL taxonomy description for this concept. Often absent for company-extension tags or older concepts.
labelstringyesHuman-readable label for the concept.
shownnumberNumber of periods shown inline.
tags_triedarrayXBRL tags that were attempted (shown when using friendly names that map to multiple tags).
truncatedbooleanTrue when the inline data[] was capped by limit.
unitstringyesUnit of measure (e.g., "USD", "shares", "USD/shares").

No examples provided.

secedgar_get_fund_holdings ~689

List what an ETF or mutual fund holds, parsed from the NPORT-P portfolio report it files with the SEC every quarter. The input is the fund — a ticker like VOO, a fund series ID, or the registrant trust — which is the opposite direction from the ownership tools: secedgar_get_institutional_holdings and secedgar_find_holders answer who owns a company, this answers what a fund owns. Each position carries the security name, CUSIP/ISIN/LEI where the filer reports them, share balance, market value in USD, and percent of the fund's net assets, alongside fund-level net assets and total assets. Positions are returned largest-first by percent of net assets, one page of limit rows starting at offset; the full report registers as df_<id> when a canvas is available, which is how a fund running to thousands of positions is aggregated or joined against the 13F and insider dataframes. An NPORT-P covers exactly one fund series and a registrant trust files one report per series, so a trust with several funds needs the specific fund named — pass its ticker or series_id. Reports publish roughly two months after the period they cover, so every result is dated: the holdings are the portfolio as of report_period_date, not as of today.

NameTypeReqDescription
fundstringyesThe fund whose portfolio you want — a fund ticker ("VOO", "SCHD"), an SEC fund series ID ("S000002839"), or a 10-digit CIK. A ticker names one share class of one series and routes directly; a CIK nam…
limitintegerNumber of positions to return inline, largest first by percent of net assets. Default 20. A broad index fund reports thousands of positions, so the inline list is a preview — read the whole portfolio…
offsetintegerPosition to start the page at, 0-based, over the full ordered holdings list. Pass the returned next_offset to read the next page — the report is parsed whole and sliced, so paging is stable and gap-f…
report_datestringTarget a specific reporting period by its last day (YYYY-MM-DD), e.g. "2025-12-31". Omit for the most recent report. Period ends follow the fund's own fiscal quarters, which are not always calendar q…
series_idstringSEC fund series identifier ("S000002839"), naming which fund of the registrant to report. Takes precedence over any series the fund input implies. Series IDs come back on fund results from secedgar_c…
NameTypeReqDescription
accession_numberstringyesAccession number — pass to secedgar_get_filing for the full document.
as_ofstringyesThe portfolio date these holdings are reported as of, and the publication lag behind it.
available_report_periodsarrayyesPeriod end dates of this fund's reports, newest first — the horizon report_date can address, not the fund's full history. It reaches back roughly a decade of quarterly reports, and a period older tha…
capnumberThe limit cap applied.
class_idsarrayyesSEC class IDs of the share classes covered. One report covers every class of the series, so a fund with both an ETF and an admiral-share class reports them together.
datasetobjectCanvas dataframe holding every position in the report (the inline holdings[] is a preview capped at limit). Each row carries the fund keys — series_id, registrant_cik, report_period_date, accession_n…
filing_datestringyesDate the report was submitted to EDGAR (YYYY-MM-DD).
formstringyesEDGAR form name — "NPORT-P", or "NPORT-P/A" for an amended report.
fundstringyesThe fund input, echoed.
holdingsarrayyesOne page of positions, `limit` rows starting at `offset`, largest first by percent of net assets.
is_final_filingbooleanTrue when the fund reports this as its last filing on the series, which marks a liquidation or merger. Absent when the filing does not answer.
net_assets_usdnumberFund net assets in USD at the report date — the denominator of percent_of_net_assets.
next_offsetnumberOffset to pass on the next call to continue through the portfolio. Absent on the last page.
noticestringGuidance when the report carried no positions or the page fell past the end.
offsetnumberyesPosition the returned page starts at, 0-based.
publication_lag_daysnumberDays between the portfolio date and the filing date. Absent when the report omits its period date.
registrant_cikstringyesCIK of the registrant trust, zero-padded to 10 digits.
registrant_namestringyesEDGAR-conformed name of the registrant trust.
report_period_datestringLast day of the period this portfolio is reported as of (YYYY-MM-DD). Holdings are the fund's positions on this date, not today's. Absent only when the filer omits it.
report_period_endstringLast day of the fiscal year the reporting period falls in (YYYY-MM-DD) — the fund's fiscal year end, not the portfolio date.
series_idstringSEC series ID of the fund this report covers. Absent when the registrant files as a single fund with no series structure, which is how some older exchange-traded trusts are organized.
series_namestringFund name as the filer states it on the report. A closed-end fund organized as a single registrant names itself here with no series_id alongside; absent only when the filer leaves the field blank or…
shownnumberNumber of positions shown inline.
total_assets_usdnumberFund total assets in USD at the report date.
total_holdingsnumberyesPositions in the report, before offset and limit — the size of the full portfolio.
total_liabilities_usdnumberFund total liabilities in USD at the report date.
truncatedbooleanTrue when the inline holdings list was capped by limit.

No examples provided.

secedgar_get_insider_transactions ~331

Fetch Form 4 insider transactions (purchases, sales, grants, exercises) for a company by parsing SEC EDGAR ownership XML. Returns the reporting person, their relationship to the issuer, transaction date, type, shares traded (absolute magnitude), direction (acquire/dispose), price per share, and shares owned after the transaction. Covers nonDerivative transactions (open-market buys/sells, gifts) and derivative transactions (option exercises, RSU vests). When a canvas is available, the full set of transactions parsed from the scanned recent filings is materialized as df_<id> (the inline list is a preview capped at limit) — query it with secedgar_dataframe_query to aggregate net buy/sell by insider: SUM(CASE WHEN direction='dispose' THEN -shares_traded ELSE shares_traded END). Use secedgar_search_filings with forms=["4"] for broader date-range queries or to search across all companies.

NameTypeReqDescription
limitintegerMaximum number of transactions to return across all Form 4 filings fetched. Filings are scanned newest-first. Default 20.
ticker_or_cikstringyesCompany ticker symbol (e.g., "AAPL") or 10-digit CIK number (e.g., "0000320193"). The issuer, not the reporting person.
transaction_typestringFilter by direction. "purchase" = open-market buys (code P). "sale" = open-market sells (code S). "all" includes grants, awards, exercises, gifts, and other coded transaction types as well.
NameTypeReqDescription
capnumberThe limit cap applied.
datasetobjectCanvas dataframe holding the full parsed transaction set from the scanned filings (the inline transactions[] is a preview capped at limit). Each row carries the issuer (issuer_cik, issuer_ticker) plu…
filings_scannednumberyesNumber of Form 4 filings scanned to produce the result.
issuer_cikstringyesIssuer CIK, zero-padded to 10 digits.
issuer_namestringyesIssuer entity name (SEC-conformed).
issuer_tickerstringIssuer ticker symbol when available.
noticestringGuidance when results are empty after filtering — explains the filter applied and suggests alternatives.
shownnumberNumber of transactions shown inline.
transactionsarrayyesInsider transactions, newest filing first. Preview capped at `limit` — the full scanned set lives on the canvas dataframe (see `dataset`).
truncatedbooleanTrue when the inline transactions[] was capped by limit.

No examples provided.

secedgar_get_institutional_holdings ~709

Fetch 13F-HR quarterly institutional holdings by parsing the SEC EDGAR information table XML. ticker_or_cik is the institutional filer — its 10-digit CIK (e.g. 0000102909), or an entity name resolved through EDGAR entity search — and the tool returns what that institution holds. A name that matches several EDGAR filers (some legal names are shared across entities) returns those candidates so you can retry with the exact CIK, rather than guessing. For the reverse direction — which institutions hold a given portfolio company — use secedgar_find_holders, whose filer_cik results feed straight back into this tool. The 13F information table lists each position: issuer name, CUSIP, shares held, market value (in whole USD), and put/call designation for options. Sub-lines for the same security are consolidated into distinct positions sorted by value by default (set consolidate=false for raw filing rows). The inline holdings list is one page of limit rows starting at offset — pass the returned next_offset to walk further down a large information table. The full parsed holdings set is also materialized as df_<id> when a canvas is available — so query it with secedgar_dataframe_query to aggregate the whole filing or self-join across quarters on cusip + reporting_period. Institutions with less than $100M in 13(f) securities are exempt and may not file. Use secedgar_search_filings with forms=["13F-HR"] for broader search.

NameTypeReqDescription
consolidatebooleanWhen true (default), info-table sub-lines for the same security (CUSIP + class + put/call) are summed into one position and results are sorted by market value descending, so `limit` returns the large…
limitintegerMaximum number of holdings rows to return. 13F filings from large institutions can contain thousands of positions. Default 20.
offsetintegerRow to start the page at, 0-based, over the ordered position list. Pass the next_offset from the previous response to read the next page — the filing is parsed whole and sliced, so paging is stable a…
quarterstringReporting quarter to target, in "YYYY-QN" format (e.g., "2025-Q4"). When omitted, returns the most recent 13F-HR available. Quarters map to the filing window: Q4 2025 = filings submitted roughly Jan–…
ticker_or_cikstringyesThe institutional filer whose 13F to fetch — a 10-digit CIK (e.g. "0000102909" for VANGUARD GROUP INC, the most reliable form) or an entity name. Names resolve through EDGAR entity search, which cove…
NameTypeReqDescription
accession_numberstringyesAccession number for this 13F-HR filing — pass to secedgar_get_filing for the full document.
capnumberThe limit cap applied.
datasetobjectCanvas dataframe holding every parsed position from this 13F filing (the inline holdings[] is a preview capped at limit). Each row carries the filer metadata (filer_cik, filer_name, reporting_period,…
filer_cikstringyesCIK of the 13F filer, zero-padded to 10 digits.
filer_namestringyesName of the institutional filer (the 13F submitter).
filing_datestringyesDate the 13F was submitted (YYYY-MM-DD).
holdingsarrayyesOne page of holdings, `limit` rows starting at `offset` — consolidated positions sorted by market value when consolidate=true, else raw information-table rows in filing order.
next_offsetnumberOffset to pass on the next call to continue through the positions. Absent on the last page (no rows remain past this one).
noticestringGuidance when no filings were found or the result set is empty — suggests alternatives.
offsetnumberyesRow the returned page starts at, 0-based — the effective offset applied.
reporting_periodstringThe calendar-quarter end date this 13F covers (YYYY-MM-DD), from the filing cover page. Absent if not surfaced in the filing.
shownnumberNumber of holdings shown inline.
total_holdings_in_filingnumberyesTotal number of raw information-table rows in this filing, before consolidation and the limit.
total_positionsnumberNumber of distinct positions after consolidating info-table sub-lines, before the limit. Present only when consolidate=true.
truncatedbooleanTrue when the inline holdings[] was capped by limit.

No examples provided.

secedgar_get_material_events ~532

Retrieve a company's 8-K filings with their item codes decoded, optionally filtered to specific items. 8-K item codes are how material events are actually scoped — 1.01 material agreements, 2.02 results of operations, 4.02 non-reliance on previously issued financials, 5.02 officer and director departures — and filtering by them is narrower than any form-level filter in secedgar_search_filings or secedgar_company_search, neither of which can see items. Each row carries the accession number and primary document for secedgar_get_filing; press releases usually ride as EX-99 exhibits rather than in the primary document. Two numbering regimes exist: filings from 2004-08-23 onward use the x.xx codes, earlier ones use single integers (12 was the old results-of-operations item, 9 the old Regulation FD item), and both are accepted as filters and decoded in the response. A date window reaches filings older than the recent submissions window by paging into the archive. The full filtered set is materialized as a dataframe for item-distribution analysis over time.

NameTypeReqDescription
companystringyesCompany ticker symbol (e.g. "AAPL"), name (e.g. "Apple"), or CIK number (e.g. "320193"). Ticker is the exact lookup; name search matches current and former names.
filed_afterOnly include filings filed on or after this date (YYYY-MM-DD). A date filter routes the scan into the older submissions archive pages, so it reaches 8-K filings that predate the ~1000-filing recent w…
filed_beforeOnly include filings filed on or before this date (YYYY-MM-DD). Use alone or with filed_after; together they bound the archive-page scan.
itemsarrayItem codes to filter to; a filing matches when it reports any of them. Omit to return every 8-K. Current-regime codes are dotted ("2.02"), pre-2004-08-23 codes are bare integers ("12"), and the two v…
limitintegerFilings returned inline, newest first. The full filtered set is materialized as a dataframe when it exceeds this and a canvas is available. Default 20.
NameTypeReqDescription
capnumberThe limit cap applied.
cikstringyesCentral Index Key of the resolved company, zero-padded to 10 digits.
company_namestringyesSEC-conformed company name.
datasetobjectCanvas dataframe holding the full filtered 8-K set. Item codes ride as a comma-separated `item_codes` column, so item-frequency-over-time queries split it (`unnest(string_split(item_codes, ','))`). A…
filingsarrayyesMatching filings, newest first, capped at limit.
history_scanned_throughstringOldest filing date reached by the scan (YYYY-MM-DD). Older filings were not examined: the recent window caps at ~1000 filings, and archive pages are fetched only when a date filter or an under-filled…
item_distributionobjectyesCount of the 8-K filings scanned in the date window carrying each item code, before the items filter. Empty when no 8-K filings were scanned.
items_filterarrayThe item codes filtered on, echoed. Absent when no filter was applied.
noticestringGuidance when nothing matched — distinguishes an empty date window from an items filter that excluded everything.
shownnumberNumber of filings shown inline.
total_8k_scannednumberyes8-K filings inside the date window before the items filter — compare against total_matched to see how much the items filter removed.
total_matchednumberyesFilings matching every applied filter across the whole scan, which may exceed limit and the inline list.
truncatedbooleanTrue when the inline filings list was capped.

No examples provided.

secedgar_get_snapshot ~371

Build a company financial profile in one call: the latest value of every supported XBRL concept, grouped by statement. Reads the filer's complete companyfacts payload once rather than one request per concept, so it replaces a run of secedgar_get_financials calls when the question is "what do this company's financials look like right now". Values use the same frame dedup and tag priority as secedgar_get_financials, so the two agree for any concept they both cover. Duration concepts (income statement, cash flow, per-share) report their latest full year and latest single quarter; balance-sheet and entity-info concepts report their latest point-in-time value, since that is the only form they are filed in. A concept the filer does not report is listed under gaps with the XBRL tags that were tried — never zero-filled or interpolated. Use secedgar_get_financials for a full time series of one concept, and secedgar_compare_companies to put several companies side by side.

NameTypeReqDescription
companystringyesTicker symbol (e.g. "AAPL") or CIK number. Ticker is preferred.
period_typestringWhich duration periods to report per concept: the latest full year, the latest single quarter, or both (default). Balance-sheet and entity-info concepts are point-in-time and always report their late…
taxonomystringXBRL taxonomy to resolve concepts under. Every concept is looked up in this one taxonomy, so ifrs-full covers only the concepts with confirmed IFRS tag variants and the rest — including the dei entit…
NameTypeReqDescription
caveatsarrayyesData-completeness warnings. One entry when one or two calendar quarters are absent from every recent qualifying year, because SEC reports a filer's fiscal Q4 as the 10-K residual rather than a discre…
cikstringyesResolved CIK, zero-padded to 10 digits.
companystringyesResolved entity name (SEC-conformed).
concepts_resolvednumberyesConcepts that produced at least one value.
concepts_totalnumberyesConcepts in the supported catalog that were attempted.
gapsarrayyesConcepts with no value for this filer. Deliberately explicit — a missing concept is never zero-filled or interpolated.
linesarrayyesResolved concepts, ordered by statement group then concept name.
period_typestringyesDuration periods reported, echoed from input.
taxonomystringyesTaxonomy the concepts were resolved under, echoed from input.

No examples provided.

secedgar_search_concepts ~251

Search supported XBRL financial concepts by keyword, statement group, or taxonomy. Use before secedgar_get_financials or secedgar_fetch_frames to discover the right friendly name, or pass a raw XBRL tag (e.g., "NetIncomeLoss") to reverse-lookup which friendly names map to it. Empty search with no filters returns the full catalog.

NameTypeReqDescription
groupstringFilter to a single financial statement group. income_statement covers P&L items; balance_sheet covers position items (use instant periods in secedgar_fetch_frames); cash_flow covers CF statement item…
searchstringCase-insensitive substring matched against friendly name, label, and XBRL tags. Examples: "cash" finds cash and operating_cash_flow; "earnings" finds eps_basic and eps_diluted; "NetIncomeLoss" revers…
taxonomystringFilter to a single XBRL taxonomy. us-gaap for US filers, ifrs-full for foreign filers, dei for entity info.
NameTypeReqDescription
conceptsarrayyesMatching concepts, ordered by group then alphabetical by name.
noticestringGuidance when no concepts matched — echoes the search term and suggests alternatives.
totalnumberyesNumber of concepts matching the filters.

No examples provided.

secedgar_search_filings ~1,029

Search EDGAR filings since 1993. Full-text search covers 2001-present (the EFTS index floor); pre-2001 date ranges (to 1993) are served from the archives by form and entity/date. Pre-2001 free text needs entity scope (ticker:/cik:) — with it, the tool reads the entity's matching filings and matches the terms locally, which costs a few seconds (SEC's request rate caps the scan at roughly 5s for the 50-document maximum). A range crossing 2001-01-01 is split at the boundary and the two eras merged, each row tagged with its source. Supports exact phrases, boolean operators, wildcards, and entity targeting (ticker:AAPL or cik:320193 in query).

NameTypeReqDescription
end_dateEnd of date range (YYYY-MM-DD). Both start_date and end_date must be provided for date filtering.
formsarrayFilter to specific form types (e.g., ["10-K", "10-Q", "8-K"]). Without this, searches all form types. Note: "10-K" also matches amendments filed as 10-K/A. SEC renamed the blockholder schedules on 20…
limitintegerResults per page. Max 100.
offsetintegerPagination offset. For sort=relevance on a 2001-onward search, EDGAR pages server-side up to its 10,000-result cap. Everywhere else the offset indexes the rows this call assembled and sorted: a singl…
queryFull-text search query. Optional — omit (or pass "") to browse by form type and/or entity instead, e.g. every S-1 in a date window, or a company's filings via ticker:/cik:. A date range alone is not…
sortstringResult ordering. "filing_date_desc" (default) returns most recent first. "filing_date_asc" returns oldest first. "relevance" returns SEC's native search-score order, which weights term match strength…
start_dateStart of date range (YYYY-MM-DD). Both start_date and end_date must be provided for date filtering.
NameTypeReqDescription
capnumberThe limit cap applied.
datasetobjectCanvas dataframe holding the fetched hits (full-text window, or the full pre-2001 archive match set), each tagged with its `source`. Absent when total ≤ inline limit, canvas is unavailable, or materi…
effectiveQuerystringyesThe query as executed against EDGAR (ticker/cik: tokens resolved to entity names).
form_distributionobjectCount of results by form type. Helps narrow follow-up searches.
noticestringGuidance when no results were returned — echoes the query and suggests how to broaden.
resultsarrayyesMatching filings.
scanobjectPresent only on the pre-2001 entity-scoped free-text path, where no full-text index exists and terms are matched by reading documents. Reports the scan's shape so a partial read is never presented as…
shownnumberNumber of results shown inline.
totalnumberyesTotal matching filings, which can exceed the rows returned inline or materialized. On the full-text (2001+) path this is capped at 10,000; entity targeting (ticker:/cik:) scopes server-side via the E…
total_is_exactbooleanyesFalse when total is a lower bound — the full-text path hit its 10,000 cap, a pre-2001 archive scan hit its page/quarter cap before exhausting the range, or a pre-2001 local text scan hit its document…
truncatedbooleanTrue when results were capped by limit.

No examples provided.