beatandraise.com SEC Filings
com.beatandraise/sec-filingsVersion 1.0.0SEC EDGAR since 1993: search and read filings, insiders, 13F, statements; verify quotes and figures.
Status
Responds145 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 13:48 UTC
- Latency
- 145 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://beatandraise.com/mcpResponds145 msNo sign-in
Claude Code
claude mcp add --transport http sec-filings https://beatandraise.com/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: sec-filings
Remote MCP server URL: https://beatandraise.com/mcpCursor
{
"mcpServers": {
"sec-filings": {
"url": "https://beatandraise.com/mcp"
}
}
}VS Code
code --add-mcp '{"name":"sec-filings","type":"http","url":"https://beatandraise.com/mcp"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
29 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
check_citationsCheck every number in a draft against the filing characters it cites, and link them.
Write your draft with a citation right after each figure, using the ref that
list_figures or verify_figure gave for it:
revenue of $68.1 billion [ref:0001045810-26-000019/q4fy26pr.htm@112+4]
For a number you calculated, state the formula, then cite its inputs; a, b, c… are
the refs in the order you cite them:
up 73% [calc: a/b-1, ref:<current>, ref:<prior>]
free cash flow margin 53.9% [calc: (a-b)/c, ref:<operating cash flow>, ref:<capex>, ref:<revenue>]
Formulas use a-h, + - * /, parentheses and constants (a*4, a/b*100). A measure such
as a margin can be defined more than one way, so the formula you state is the one
checked and shown (formula_source "stated"); a figure printed in parentheses is tried
as negative, then as a positive amount (signs). Without a formula, the usual sum,
difference, ratio and growth rate are tried (formula_source "inferred").
You may also give a calc's value: [calc: 53.9% = (a-b)/c, ref:…]; without it, a calc is
for the number just before the bracket. A ref is for the number in its sentence that
equals the characters it points at, wherever it sits, so a ref at the end of a
sentence works, and a year is checked like any figure when the ref points at a year.
A ref names the exact characters in the document: <accession>/<filename>@<start>+<len>.
Returns per citation: ok / rounded (your number is the cited figure times a power of
ten, rounded), mismatch (the cited characters, or your formula of them, give a different
number), bad_ref (no number at that position), bad_formula (unreadable, or not using
every cited input), bad_claim (a calc's stated value is not in its sentence), not_derivable (no formula stated, and no sum, difference, ratio
or growth rate of the inputs gives your number). unsourced_numbers lists figures with no citation. Fix
every failure before presenting the text, then use linked_text and footnotes: each
footnote links to the h | No | Yes | Yes | Yes |
compare_filing_itemWhat changed in one Item of a 10-K, 10-Q or 20-F since the same filing a year earlier
(new and dropped risk factors, rewritten MD&A, legal proceedings...), shown to the user
as a marked-up comparison in the viewer.
You get every added, removed and changed paragraph as text: inside a changed one,
[-old words-] and {+new words+}. Unchanged paragraphs are left out of your copy. The
prior filing is the company's same form filed closest to one year before (a 10-Q is
compared with the same quarter last year); pass prior_accession_number to choose another.
Changes are numbered; a long list comes in pages: the last line says to call
more_item_changes for the next one.
Args:
accession_number: The newer filing (10-K, 10-Q or 20-F)
item: The Item, by number or name ("1A", "Risk Factors", "7", "MD&A", "3")
part: 10-Q only: "I" or "II" when the number exists in both parts ("1", "2"); Risk Factors is Part II Item 1A
prior_accession_number: Optional. The older filing to compare with | No | Yes | Yes | Yes |
get_companyLook up a company by CIK to get its name(s), ticker(s) and industry.
When known, the result also has the SEC's SIC classification: sic (4-digit code, e.g. "6200"),
sic_description (e.g. "SECURITY & COMMODITY BROKERS, DEALERS, EXCHANGES & SERVICES"),
sic_url (a page listing the other companies in the same industry), fiscal_year_end (MMDD, e.g.
"1231" for 31 December) and state_of_incorporation. SIC is the SEC's own scheme and is not GICS;
individuals and most funds have none.
succession_filing, when present, is an 8-K12B or 8-K12G3 from the last five years in which this
company says it succeeded an earlier registrant; its older history may be under that
predecessor's CIK (see search_companies).
Args:
cik: Central Index Key (e.g. "0000320193" or "320193") | No | Yes | Yes | Yes |
get_documentFetch a filing document's content from storage.
For one section of a 10-K, 10-Q, 8-K or 20-F (MD&A, Risk Factors, Legal
Proceedings, Item 2.02…), use get_filing_item instead: it returns just
that Item, a fraction of the document, with a link highlighting it.
Returns the document as markdown (default) or raw HTML. Use this to read
the actual text of a whole 10-K, 8-K, exhibit, or any other filing document.
The first line gives its source: the beatandraise.com viewer link, to cite.
Name the document either by accession_number + filename, or by url: a
sec.gov document link (https://www.sec.gov/Archives/edgar/data/<cik>/<accession>/<file>,
also inside an /ix?doc= link) or a beatandraise.com document link.
Args:
accession_number: SEC accession number
filename: Document filename from the content_object (e.g. "ef20060722_8k.htm")
cik: Optional. CIK of the filer (e.g. "0000320193"); found from the accession number when left out
url: Optional. A sec.gov or beatandraise.com link to the document, instead of the fields above (not a company website)
get_markdown: Return markdown version (default True). Set False for raw HTML. | No | Yes | Yes | Yes |
get_filing_detailGet full filing metadata including its content_object.
content_object lists every document in the filing with filename, doc_type,
description, sequence and whether a markdown version exists; read one with
get_document(cik, accession_number, filename). Cite beatandraise_base_url +
filename (the beatandraise.com viewer). The R*.htm files are
XBRL financial-table pages; list_filing_tables says which table each one is.
Args:
accession_number: SEC accession number (e.g. "0001140361-26-006577") | No | Yes | Yes | Yes |
get_filing_itemRead one Item of a 10-K, 10-Q, 8-K or 20-F, e.g. Risk Factors or MD&A, instead of the whole document.
Much smaller than get_document: a 10-K's Item 1A is typically 5-15% of the
filing. The first lines say which item it is and give a highlight_url marking
the whole section in the filing, to cite.
If the item's heading was not found, you get the text between the
neighbouring items instead, and the first line says so ("APPROXIMATE").
That span contains the item if the filing has it: search within it.
Args:
accession_number: SEC accession number of a 10-K, 10-Q, 8-K or 20-F (other forms have no Items:
read them with search_document or get_document)
item: The item: a number ("1A", "7", "7A", "2.02", a 20-F's "5" or "16G") or a name ("Risk Factors",
"MD&A", "Legal Proceedings"). For a 10-Q, "Part II Item 1A" also works. In a 20-F, Risk
Factors is inside Item 3 (3.D) and MD&A is Item 5 (Operating and Financial Review).
part: 10-Q only: "I" or "II" when the number exists in both parts ("1", "2", "3", "4");
a bare number means Part I.
get_markdown: Markdown (default). Set False for the raw HTML of the section. | No | Yes | Yes | Yes |
get_filingsQuery SEC filings by form type, date range, CIK and/or 8-K item.
Returns filings newest first. Each filing's content_object lists its documents
(sequence 1 is the primary); read one with get_document(cik, accession_number,
filename). Cite beatandraise_base_url + filename; the filing's source has a
ready-made citation. 8-Ks carry their items ("2.02 Results of Operations...").
R*.htm files are XBRL table pages (list_filing_tables names them).
An 8-K carries a headline when its press release has one: found by rules, so use
it to choose which 8-K to read, not as a quotation (verify_quote first). No
headline says nothing about the filing. An 8-K with only Item 9.01 and no headline
files exhibits only (exhibits_only lists them) and is rarely news.
Args:
form: SEC form type (e.g. "10-K", "10-Q", "8-K", "4", "13F-HR", "S-1"), or
several comma-separated in one call (up to 20), e.g.
"N-CSR,N-CSRS,N-CSR/A,N-CSRS/A" or "10-K,10-K/A". Amendments are
their own form types, so name them to include them.
cik: Company CIK (e.g. "0000320193" or "320193")
from_date: Start date inclusive (YYYY-MM-DD). Without cik, defaults to
30 days before to_date (or today); pass it to reach older filings.
to_date: End date inclusive (YYYY-MM-DD)
limit: Max results (1-100, default 100; at most 25 with include_item_text).
For more, page with offset
offset: Pagination offset
item: Only 8-Ks reporting this item, by its number as the 8-K header states it,
e.g. "5.02" (departure or election of directors or officers, officers' pay),
"1.01" (material agreement), "2.01" (acquisition or disposal), "4.01"
(auditor change), "5.07" (shareholder vote); several comma-separated match
any ("1.01,2.01"). Defaults form to "8-K,8-K/A". Numbered since 2004-08-23.
Use it instead of reading 8-Ks one by one.
include_item_text: With item, also return each filing's text of that item
(item_texts, with a hi | No | Yes | Yes | Yes |
get_financial_historyA company's financial statements from its last several 10-Ks or 10-Qs, in one call.
For trends (revenue, margins, cash flow) instead of calling get_financial_statements filing
by filing. Returns each filing, newest first, with its statements as filed. They are not
combined: periods repeat across filings (the newest filing's figure is current; it may
restate), and labels and scale can differ. Read the figures from each filing yourself.
Coverage: filings with XBRL, from mid-2009 to mid-2011 by company size. For earlier
reports read a 10-K's Item 8 with get_filing_item.
Args:
cik: Company CIK (use search_companies to find it)
period: "annual" (10-K, or a foreign filer's 20-F / 40-F; default 5 filings, max 10) or
"quarterly" (10-Q, default 8, max 20; foreign filers report quarters on 6-K, not covered)
statements: Optional subset: "income_statement", "balance_sheet", "cash_flow",
"equity", "comprehensive_income". Ask for fewer to get more filings in one answer.
limit: Number of filings to read
before: Only filings filed on or before this date (YYYY-MM-DD), for history as of a past date
fiscal_year: Only filings for this fiscal year, as the company states it on the filing
(fiscal, not calendar: Medtronic's fiscal 2018 runs May 2017 to April 2018)
fiscal_period: "Q1", "Q2", "Q3" (a 10-Q) or "FY" (the annual report). There is no Q4
filing: the fourth quarter is in the annual report. fiscal_year=2018 with
period="quarterly" returns its Q1-Q3.
include_tags: true to also get each statement as `lines`: every line's XBRL tag
(concept, members, unit) and its figures for the filing's own period, each with
value, printed text, a `ref` for check_citations and a `highlight_url`. For
spreadsheet models: concept + members + unit is the same line in the next filing.
No ref before mid-2019 (no inline XBRL); tags arrive the night after filing
(`tags_note`). Larger responses: | No | Yes | Yes | Yes |
get_financial_statementsExtract structured financial statements from a 10-K or 10-Q filing.
Returns balance sheet, income statement, cash flow statement, equity statement,
and comprehensive income — each as markdown table content extracted from the
filing's XBRL R-files.
To use this tool, first find a 10-K or 10-Q accession number using get_filings,
then pass it here.
Coverage: filings with XBRL, which the SEC phased in by company size: the largest companies
from mid-2009, other large companies from mid-2010, all others from mid-2011. Earlier reports
have no statements here (read a 10-K's Item 8 with get_filing_item); to have earlier years
added, email support@beatandraise.com.
Args:
cik: Company CIK (e.g. "0000320193")
accession_number: Accession number of a 10-K or 10-Q filing
include_tags: true to also get each statement as `lines`: every line with its XBRL tag
(concept, axis members, unit) and its figures for the filing's own period (this
quarter and year to date, or the balance sheet date), each with its value in full
units, the text the page prints, a `ref` for check_citations and a `highlight_url`
that opens the 10-K / 10-Q with that number marked. For building a spreadsheet model
or citing figures: concept + members + unit identifies the same line in the next
filing. Figures printed as a dash (zero) and filings before mid-2019 (no inline
XBRL) have no ref or link; a filing's tags are added the night after it is filed
(`tags_note` says why a statement has none). Responses are larger: ask for fewer
statements or filings. | No | Yes | Yes | Yes |
get_fiscal_calendarGet a company's fiscal calendar: every quarter it reported, with its own dates.
One row per quarter, oldest first, from the company's 10-K and 10-Q reports in
order: period_start is the day after the previous quarter's period end,
period_end the report's, fiscal_year and fiscal_quarter by position after the
previous annual report (Q4 is the 10-K), plus the quarter's length in months and
the report that closes it (form, filing_date, accession_number; its page is
beatandraise_base_url + accession_number). cover_fiscal_year /
cover_fiscal_period are what the filing's cover says, as filed (about 1% disagree,
flagged). latest_fiscal_year_end is the newest 10-K's period end.
Use it whenever a question names a fiscal period ("Apple Q1 FY2024", "Nvidia's
fiscal 2025", "Q4") to get the exact dates instead of guessing: fiscal years are
not calendar years (Medtronic's fiscal 2018 runs May 2017 to April 2018), and 52/53
week companies end on a weekday that moves every year (Apple's FY2023 ended
2023-09-30, FY2024 on 2024-09-28). Also to see which report covers a quarter, and
that Q4 has no 10-Q of its own: Q4 = the 10-K's year minus the Q3 10-Q's nine
months.
Irregular quarters are flagged, never corrected: irregular_quarter (not 3 months:
a missing 10-Q, or a company that files only 10-Ks, whose rows are years),
irregular_year, transition (10-KT/10-QT, a fiscal-year change), period_mismatch
(header_period and xbrl_period differ; period_end is the one the filing's figures
confirm), header_only (no XBRL, dates from the submission header, mostly before
2011), fy_mismatch / fp_mismatch, duplicate_report, amendment_only, first. 10-K/10-Q
filers only: a foreign filer (20-F, 40-F) has no quarterly calendar here.
Args:
cik: Company CIK (e.g. "320193" for Apple; use search_companies to find it)
fiscal_year: Only this fiscal year's quarters (e.g. 2024)
from_date: Earliest period end (YYYY-MM-DD)
to_date: Latest period end (YYYY-MM-DD)
limit: The newest N quarters | No | Yes | Yes | Yes |
get_helpWhat the beatandraise.com tools cover, where they stop, and what to use instead.
Call it when a tool returned nothing, an error or less than the user needed, or the user
asks for something you cannot find a tool for. Put the user's need in their own words in
question ("institutional ownership of SPY", "Risk Factors of a 40-F") and the tool that fell
short in tool_name. The most relevant entries come first. The question is recorded, as every
call's arguments are, and tells us what to add. A user who wants a reply can write to
support@beatandraise.com.
Args:
question: What the user wanted, in their words
tool_name: The tool that did not give it, if any (e.g. "get_institutional_holders") | No | Yes | Yes | No |
get_holdingsGet parsed 13F-HR institutional holdings for a filer.
Returns individual stock positions with issuer name, CUSIP, FIGI, market value,
share count, investment discretion, and voting authority, parsed from the 13F
information table XML ("format": "xml"), as filed: one row per entry, values in the
filer's unit (thousands of dollars for most filings before 2023, dollars since).
13F-HRs filed before SEC introduced the XML table (2013 Q2) carry their holdings as a
plain-text table in the filing's own document. For those the result has "format": "text"
and "text": that document as filed, paged by line (limit/offset count lines, total_lines
says how many). Read the table from it; search_document on its filename finds one position.
"period" in the result is the quarter the report covers; "filing_date" is about 45 days later.
A "period_note" says when the filer has no 13F for the period asked for and an earlier one is
returned (that quarter is not filed yet, or the filer stopped).
Each holding also carries issuer_cik, sic and sic_description (the SEC's SIC industry
classification of the issuer, not GICS) when the CUSIP maps to a company with a SIC. In a typical
quarter that is about 87% of the value held; funds, ETFs, options and unmapped CUSIPs have none.
"with_sic" in the result says how many holdings on this page were classified, so say how much of a
portfolio an industry breakdown covers. Use sic_url from get_company to see peers in an industry.
Args:
cik: CIK of the 13F filer / institutional investor (e.g. "1535950")
period: Report period (YYYY-MM-DD), e.g. 2026-06-30 for the second quarter: the 13F for that period, else the latest period before it. Default: the latest period.
limit: Max holdings per page (1-5000, default 500)
offset: Pagination offset | No | Yes | Yes | Yes |
get_insider_transactionsGet parsed Form 4 insider transactions for a company.
Returns insider buy/sell transactions with owner details (name, title,
relationship), transaction details (date, code, shares, price), and
post-transaction holdings. Data is extracted from the Form 4 XML.
Transaction codes: P=Purchase, S=Sale, A=Award, M=Exercise, G=Gift, F=Tax
(shares withheld to pay tax on a vesting or exercise, not a sale by choice).
Every row carries plan_10b5_1: the filing's Rule 10b5-1 checkbox as filed
(true, false, or null for filings from before the box existed in 2023). It is
the filer's declaration for the whole filing. Filers sometimes leave it
unticked and name a plan in a footnote (common for plans adopted before 2023),
or tick it without one, so before saying a sale was or was not under a plan,
read the footnotes (include_footnotes=True). An S alone does not tell a planned
sale from a discretionary one.
With include_footnotes=True each row also lists the footnotes it points to
({id, text}, as filed): plan adoption dates, the price range behind a weighted
average price, shares sold to cover taxes, trusts and other indirect holdings.
Covers filings from coverage_from (2024-01-01).
By default only Form 4 Table I (the shares themselves) is returned. With
include_table_ii=True, Table II lines are added and every row says which table
it is from ("I" or "II"); Table II rows also give the underlying security,
exercise price and dates. Table II is what the SEC calls "derivative
securities" for Section 16: stock options, but also RSUs, PSUs and convertible
share classes, which are compensation or share classes, not derivatives in the
usual sense, so describe them by their security_title. An RSU vesting appears
in both tables (an M disposal of units in II, an M acquisition of shares in I):
count it once. A grant (A) is compensation, not a purchase. Table II covers
filings from coverage_from (2024-01-01).
Args:
cik: Issuer CIK — the company whose insiders are trading (e.g. "320193" f | No | Yes | Yes | Yes |
get_institutional_holdersWho holds a company, from 13F filings: how much of each share class institutions hold,
and how that changed quarter by quarter. The company-side view of 13F; get_holdings is the
manager side (what one institution owns).
Use it for questions like:
- "What % of AMD do institutions hold, and how has it changed over the last 4 quarters?"
-> quarters=4; read quarters[].share_classes[].pct_of_class.
- "Is Baupost an investor in AMD?" -> holder="Baupost" (a name fragment or a filer CIK).
holder.matched_filers says which filers the name matched (empty: no 13F filer has
it), holder.positions each quarter's position, holder.not_held_in the quarters with
none. With holder the response is lean unless detail="full".
- "Who are the largest holders / who bought or sold most last quarter?" -> top_holders,
biggest_buyers, biggest_sellers, largest_new_positions, largest_exits.
- "Who owns more than 5%?" -> large_holders_5pct (latest 13D/13G per holder).
quarters[] is newest complete quarter first (the one still being filed is
in_progress_quarter), each with holders, shares_held, value_usd and share_classes[] (per
cover-page class: shares_outstanding, held_by_13f, pct_of_class), share_count_source and
holders_url.
Report each share class separately; never add classes together. Caveats to state: 13F is as
filed and not deduplicated, options are excluded, holdings can exceed 100% for heavily
shorted stocks, and a "new position" may be a manager whose previous 13F was late. Cite
share_count_source for share counts and holders_url for holdings.
Args:
company: Ticker (e.g. "AMD") or CIK of the company being held (not of the institution); for a
company name, get them from search_companies first
quarters: Number of complete quarters, newest first (1-12, default 4)
holder: Optional 13F filer to follow across the quarters: a name fragment ("Baupost",
"Berkshire") or a CIK ("1061768")
limit: Number of top holders to return for the | No | Yes | Yes | Yes |
get_private_offeringGet one Form D filing in full, by accession number (from search_private_offerings).
Everything search returns, plus: the issuer's full address, phone and previous names;
co-issuers; related persons (executive officers, directors, promoters) with their roles and
addresses as filed; sales compensation recipients (placement agents and brokers) with FINRA CRD
numbers, their broker-dealer and the states they solicited in; notes the filer added to amounts,
fees and use of proceeds; the signatures; and offering_history: every filing of the same offering
(original notice and amendments, oldest first) with its cumulative amount sold and investor count,
which shows how the raise filled over time.
Args:
accession_number: Form D accession number, e.g. "0001104659-26-114962" | No | Yes | Yes | Yes |
get_shares_outstandingGet a company's shares outstanding over time, as stated on the cover page of
each 10-K, 10-Q, 20-F and 40-F (dei:EntityCommonStockSharesOutstanding).
One row per share class and as-of date, oldest first, each with the filing it
comes from (source). Counts are as filed and never split-adjusted, so a stock
split appears as a jump in ratio_to_previous (the count divided by the same
class's previous count; Apple 2020: 3.98 for its 4-for-1, the gap being
buybacks).
splits lists every stock split and reverse split found, each with its ratio
("4-for-1", "3-for-2", "1-for-10"), the dates it falls between (happened_after,
by) and the 10-K/10-Q that first restated the company's earlier share counts
by that ratio, which accounting rules require for every split (source: cite
it). restated_figures is how many share counts were restated: 1-2 is thin
evidence. Two splits between the same two filings show as one with the
combined ratio. share_count_tagging_corrections are jumps of 1000x or
1,000,000x in the reported data that were the company fixing the scale of its
XBRL share-count tag, not splits. Covers 10-K, 10-Q, 20-F and 40-F filers
(a 20-F/40-F filer reports once a year, so its window is about a year wide).
A split is listed once a filing has restated the share counts, so a
ratio_to_previous far from 1 with no split listed is worth checking in the
filing. Use this for share-count history, dilution, buybacks and splits
instead of reading filings one by one.
Multi-class companies (Alphabet, Meta) have one series per class, named by the
XBRL member (CommonClassAMember, CapitalClassCMember); "listed" maps classes to
tickers from the newest filing. Covers filings from coverage_from (2009) on,
for companies that tagged the count in XBRL. Filer errors (a zero, a mistyped
date) are returned as filed.
Args:
cik: Company CIK (e.g. "320193" for Apple)
share_class: Only this class, as returned in share_class (optional)
from_date: Earliest as-of date (YYYY-MM-DD)
to_d | No | Yes | Yes | Yes |
list_companies_by_sicList the companies in an industry, using the SEC's Standard Industrial Classification (SIC).
Pass a SIC code (3-4 digits, e.g. "6200" for securities brokers and exchanges, "3571" for electronic
computers, "7372" for prepackaged software) to get its companies: CIK, name, ticker, exchange, state of
incorporation and fiscal year end, 100 per page, companies with a ticker first. Get a company's own
code from get_company or search_companies (sic).
A sector is often several codes: pass a range or a list ("2000-2099" for all food and beverages,
"2833-2836" for drugs, "2080,2086"), and each company then carries its own code; codes lists the
codes found with their titles and company counts. A ticker is not an exchange listing: OTC
companies have tickers too, so for exchange-listed companies pass exchange="NYSE,Nasdaq". Every
answer with a code also has by_exchange: how many of its companies are on each exchange (none = no
exchange ticker), so one call says how a sector splits between NYSE, Nasdaq and OTC.
With exchange and no industry you get every company listed there (e.g. exchange="NYSE"), by name, 100
per page, each with its SIC code and title, and by_sic: how many of them each SIC code has. With
neither industry nor exchange you get the exchanges themselves: every name SEC's ticker file uses, with
how many companies are on each.
If you do not know the code, pass a word from the industry name instead ("software", "pharmaceutical",
"bank", "oil") and you get the matching SIC codes with how many companies each has; then call again
with the code you want. list_sic_codes shows the whole classification.
SIC is the SEC's classification of the filer, assigned when it registers. It is not GICS or NAICS,
individuals and most funds have none, and some codes are broad (e.g. 6770 "blank checks").
Args:
industry: a SIC code like "6200", or a word to look up codes by ("software"); may be left out
when exchange is given
query: with a code: only companies whose nam | No | Yes | Yes | Yes |
list_figuresList the numbers a filing document actually states, each with its label.
Each entry is a number with its label (the table row's label, or the words leading
up to it in prose) and its digits with formatting removed, e.g.
{"digits": "416161", "text": "416,161", "label": "Total net sales"}. Any figure you
state from this document must be one of these digit strings times a power of ten
(possibly rounded): 416161 can be cited as $416.2 billion if the table is in millions,
never as $416.9 billion. Work out the scale from the label and the table heading. Tables usually list columns in order
(current period first); confirm the period from the document if it matters.
Use near to filter by label (e.g. "gross margin", "net income"). A 10-K holds about
2,000 figures, so filter unless the document is short (press releases run ~400).
Link an entry by appending "?hl=" + its hl + "&src=mcp#br-hl-0" to highlight_base.
Args:
cik: CIK of the filer (e.g. "0000320193")
accession_number: SEC accession number
filename: Document filename (e.g. "q4fy26cfocommentary.htm")
near: Keep only figures whose label contains this text (case-insensitive)
limit: Max figures returned (1-2000, default 300) | No | Yes | Yes | Yes |
list_filing_itemsList the Items of a 10-K, 10-Q, 8-K or 20-F: which sections the filing has and where.
Each entry gives the item ("1A", "7", "2.02"), its part ("I".."IV"; 10-Q
items repeat across Part I and Part II), the SEC's title, the heading as
the filer wrote it, its length in characters, and a highlight_url that
opens the filing with that whole section marked. Read one with
get_filing_item. Items are found by their headings in the document, not
by searching for the words "Item 1A", so a table of contents or a
cross-reference is never mistaken for the section.
not_located lists the form's items that were not found: the filing may
not have them (Item 1C before 2023, a 10-K/A carrying only Part III, the
many 8-K items a given 8-K doesn't report), or the heading was missed.
get_filing_item still answers for those, with the text between the
neighbouring items. Other forms (6-K, 40-F, DEF 14A, S-1...) have no
numbered Items: read them with search_document or get_document.
Args:
accession_number: SEC accession number of a 10-K, 10-Q, 8-K or 20-F (e.g. "0000320193-25-000079") | No | Yes | Yes | Yes |
list_filing_tablesList every R*.htm financial table in a filing (10-K, 10-Q, S-1, etc.).
Returns one entry per <Report> in the filing's FilingSummary.xml — typically
the Cover page, the core financial statements (income, balance sheet, cash
flow, comprehensive income, equity), notes, and detail breakdowns. Each
entry includes the filename you'd pass to get_document, plus a canonical
type (xbrl_role_normalized) so you can find e.g. the income statement
across different filers regardless of how they ordered their R-files.
Common xbrl_role_normalized values: 'income_statement', 'balance_sheet',
'cash_flow', 'comprehensive_income', 'equity', 'segment', 'cover'.
Empty list means the filing has no FilingSummary.xml (most 8-Ks, pre-2009
filings, short-form prospectuses) or it hasn't been indexed yet.
Args:
accession_number: SEC accession number (e.g. "0000320193-25-000079") | No | Yes | Yes | Yes |
list_sic_codesList the SEC's SIC industry codes, so you know which code to use with list_companies_by_sic.
With a query (a word from the industry title: "software", "bank", "oil", "pharmaceutical") you get the
matching codes, most companies first, at most 50, each with the code (sic), the SEC's industry title
(description), the SEC office that reviews filers in it (office), and how many companies we hold under it
(companies, of which listed have an exchange ticker). Then call list_companies_by_sic with a code, or
get_company for one company's own code.
With no query you get every code (about 440) as one short line each, "code title (companies)", sorted by
code. That is a long list, so prefer a query.
SIC is the SEC's classification of the filer, assigned when it registers. It is not GICS or NAICS.
Args:
query: a word to look for in the industry titles (optional) | No | Yes | Yes | Yes |
more_item_changesThe next page of a compare_filing_item result: its changes from number changes_from on.
Pass the same arguments as the compare_filing_item call, and the changes_from its last line gives.
Args:
accession_number: As in compare_filing_item
item: As in compare_filing_item
changes_from: From the previous page's last line
part: As in compare_filing_item
prior_accession_number: As in compare_filing_item | No | Yes | Yes | Yes |
query_secSQL (DuckDB) over SEC filing data, for questions ACROSS MANY COMPANIES or filings: totals,
comparisons, breakdowns, screens, and finding which filings to read. For one company or one
filing use the other tools instead (get_filings, get_financial_history, get_filing_item...):
they pick the right tags and documents, derive quarters and link every figure, which SQL here
does not. Typical use: find the set with SQL, then read or verify each one with the other tools.
Three datasets today:
- filings: every EDGAR filing since 1993 (form, date, CIKs, 8-K Items, headline, fiscal
period), each filing's files and exhibits, where each Item of a 10-K/10-Q/8-K/20-F is,
and companies by SIC code, ticker and exchange. E.g. "the latest 10-Q of every listed
grocery chain", "8-Ks with Item 4.02 by year", "424B5s filed in February 2024 and the
issuer's 8-K within 5 days". It finds filings; read them with get_filing_item /
search_document.
- formd: Form D exempt offerings since 2008, every field, with the rules for reading amounts
("money raised by California biotechs this year against last year, by quarter").
- xbrl: every XBRL fact in every 10-K, 10-Q, 20-F and 40-F since 2009 as filed (~376M), with
the taxonomies' labels and definitions: compare one tag across companies ("the LIFO charge
of every listed grocer, by quarter"), or find who reports a figure. Values as filed: no
derived quarters, no standardization; join to filings by accession_number and cik.
Three steps:
1. No arguments: the datasets available, their form types, tables and how recent they are.
2. form="D", form="filings" or form="xbrl" (a form type or dataset name; any other form
type gives the filing index): its tables, every field with its type and meaning, the values of its
category fields, and the rules for reading it. Always read this before querying a
dataset, and follow its rules.
3. sql="SELECT ...": one DuckDB SELECT (WITH is fine) over every dataset at once; tables need
no prefix | No | Yes | Yes | No |
search_companiesSearch for companies by name or ticker symbol.
Returns matching entities with CIK, all known names, and ticker symbols, plus
the SEC's SIC industry code and name (sic, sic_description) for companies that have one.
Use this to find a company's CIK before using other tools.
A result with succession_filing filed an 8-K12B or 8-K12G3 in the last five years: it
became the successor to an earlier registrant (a new holding company, a change of
domicile, a merger), and the ticker usually moved with it. Its filings before that date,
such as past 10-Ks, are often under the predecessor's CIK. To get the predecessor's
name, search that filing (search_document) for "successor" or "12g-3" -- filers write
"successor issuer", "successor registrant" or "successor to" -- then search for it.
Args:
query: Company name or ticker (e.g. "apple", "AAPL", "Tesla")
limit: Max results (1-50, default 10) | No | Yes | Yes | Yes |
search_documentSearch within a filing's documents for specific terms. Returns matching lines with context.
If filename is omitted, searches every readable document in the filing (the main
document and its exhibits, e.g. an 8-K's press release AND its CFO commentary), up to
12 files. A filing with only XML forms (Form 144, 3/4/5, 13F, N-PORT, D) is searched as
raw XML lines, so element names (aggregateMarketValue, netAssets) match as well as values.
If filename is provided, searches only that file. Each file in the result
carries its own source (beatandraise_url) — cite the file the match came from.
Workflow:
1. Use get_filings to find the accession number for the filing you want
2. Call this tool with just accession_number and query — it will search all its documents
3. Optionally use get_filing_detail to see all files, then search a specific one by filename
Supports multiple search terms separated by commas — lines matching any term are returned.
A comma inside a number or a date is kept: "3,007" or "464,391" is searched as one figure,
"May 30, 2025" as one date, and a date also matches its other spellings ("May 30 2025",
"May30, 2025", "Dec. 31" for "December 31"). A term of 1-3 characters ("AI", "EPS", "Q3")
matches only as a whole word; longer terms match inside words ("nominat" finds "nominated").
Args:
accession_number: SEC accession number (e.g. "0001045810-25-000023")
query: Search terms, comma-separated (e.g. "singapore,revenue" or "risk factors")
cik: Optional. CIK of the filer (e.g. "0000320193"); found from the accession number when left out
filename: Optional document filename. If omitted, searches all readable documents.
context_lines: Lines of context around each match (0-50, default 10)
compact: Optional. True returns the matches as plain text (each file's link, then its
lines numbered, matching lines marked ">") instead of JSON: the same content in
fewer tokens. | No | Yes | Yes | Yes |
search_filingsFull-text search across all SEC filing content.
Returns matching documents, relevance-ranked, with counts by form type and
year (forms, years) and how many distinct companies match (companies_found).
With limit 10 or less (the default), each result carries an excerpt:
the passage of the document where the most query terms meet, to judge the
hit without opening it. Page on with page= for more; a larger limit returns
no excerpts. For every occurrence in one document, use search_document.
Use this to find filings mentioning specific topics like "revenue growth",
"cybersecurity risk", "stock buyback", etc.
Across companies ("which companies mention X"), set by_company=True: one
result per company, its best-matching document with an excerpt, so a page of
10 is ten companies, in relevance order; page on for more. For the list of
companies to choose from, ask for up to 100 at once (limit=100: no excerpts,
so read the ones you pick with search_document or cik=). Without it a page
often holds several documents of one company. Narrow with form and year
first: a broad query matches thousands of companies (companies_found says
how many), and reading them all is rarely what the user wants. Then use cik=
for every match within one company.
Coverage: filings from 2020 onwards, except Forms 3/4/5, 144, N-PORT, 13F and
D. A search for an earlier year finds nothing (the response's coverage_note
says so); for older filings, list them with get_filings (cik, form,
from_date, to_date; back to 1993) and read them with search_document or
get_document. Users who need older years searched can email
support@beatandraise.com.
Args:
query: Search query (e.g. "revenue growth", "cybersecurity risk factors")
form: Filter by SEC form type (e.g. "10-K", "10-Q", "8-K")
cik: The company's CIK, if known (search_companies gives it): narrows the
search to that company's filings. E.g. for Clear Channel Outdoor's
merger background, cik="0001334978" with query="go-shop confid | No | Yes | Yes | Yes |
search_private_offeringsSearch Form D filings: private placements and private funds (exempt offerings under
Regulation D, Section 4(a)(5) and the Investment Company Act 3(c) exclusions), since 2009.
Each result is one filing: issuer, industry group and fund type, size range, exemptions,
securities, date of first sale, offering amount (null with offering_amount_indefinite=true for
"Indefinite"), amount sold, investors, commissions and fees. totals sums the WHOLE match, not
just the page; totals.by_category splits it by industry group and fund type.
Categories are SEC's own (Form D Item 4), as the filer chose them; filter with exactly these
(case does not matter, several comma-separated). industry:
Banking & financial: Commercial Banking, Insurance, Investing, Investment Banking,
Pooled Investment Fund, Other Banking and Financial Services
Real estate: Commercial, Construction, REITS and Finance, Residential, Other Real Estate
Technology: Computers, Telecommunications, Other Technology
Health care: Biotechnology, Health Insurance, Hospitals and Physicians, Pharmaceuticals, Other Health Care
Energy: Coal Mining, Electric Utilities, Energy Conservation, Environmental Services, Oil and Gas, Other Energy
Travel: Airlines and Airports, Lodging and Conventions, Tourism and Travel Services, Other Travel
Single: Agriculture, Business Services, Manufacturing, Retailing, Restaurants, Other
fund_type (given only when industry is Pooled Investment Fund): Hedge Fund, Private Equity Fund,
Venture Capital Fund, Other Investment Fund.
Issuer size (Form D Item 5), also SEC's own values:
revenue_range (operating companies, and VC/PE funds): No Revenues, $1 - $1,000,000,
$1,000,001 - $5,000,000, $5,000,001 - $25,000,000, $25,000,001 - $100,000,000,
Over $100,000,000, Decline to Disclose, Not Applicable
nav_range (hedge funds and other investment funds): No Aggregate Net Asset Value,
$1 - $5,000,000, $5,000,001 - $25,000,000, $25,000,001 - $50,000,000,
$50,000,001 - $10 | No | Yes | Yes | Yes |
verify_figureCheck that a number you are about to state appears in a filing, however it is written.
Every number is compared as its digits alone (separators, decimal point, sign, $ and %
dropped, zeros trimmed): "416,161", "416.161" and "416,161,000" are all 416161. Your
figure must be one of the filing's numbers times a power of ten, allowing for rounding
to the digits you give: "$416.2 billion" matches 416,161 (in millions), "75%" matches
"75.0 %". Searches every document in the filing (main document and
exhibits) unless filename is given. Candidates are ranked by exactness and by your
label's words appearing in the number's row label or lead-in text.
Returns found, match_count, and up to 10 matches, each with its document, label,
context and a highlight_url that marks that exact number in the beatandraise.com
viewer. Matching ignores magnitude, so confirm each candidate's label, period and
scale from its context, then cite its highlight_url. found=false means no number in
the filing has those digits: do not attribute the figure to the filing. If you
calculated it (a growth rate, a margin), say so and cite the inputs instead.
found=null with checked=false means nothing was checked, which says nothing about the
figure: a structured XML form (Form 3/4/5, 144, D, 13F) has no text to check, so read
its values with get_document and cite that; the note says what to do.
Args:
cik: CIK of the filer (e.g. "0000320193")
accession_number: SEC accession number
value: The figure as you would state it (e.g. "$416.2 billion", "75.0%", "-1,234").
A value with one significant digit ("$10.00", "20,000,000") only matches
numbers written exactly the same way; "$2 million" is too vague to check.
label: What the figure is (e.g. "total net sales", "GAAP gross margin"). Used for ranking.
filename: Optional single document to check instead of the whole filing | No | Yes | Yes | Yes |
verify_quoteCheck that a figure or sentence really appears in a filing document, and get a
link that highlights exactly where.
Use this before stating any number or quotation from a filing. Analysts need to see
the figure in the source; a link to the whole document is not enough. Quote the text
as it appears in the document: a sentence, or a table row's label and figure
("Total net sales 416,161", "Gross margin 75.0%"). Words and numbers must match
exactly. Spacing, table-cell breaks, "$" and curly quotes may differ.
Returns found (true/false) and, for each occurrence, its surrounding context, a
highlight_url (beatandraise.com viewer, marks that exact span, including across table
cells), to cite with the quotation. If there are several occurrences, pick the one whose context fits
the claim, or quote more of the row to pin one. If found is false, do not present the
text as a quotation from this document: numbers_elsewhere shows where its figures do
appear, which usually reveals a misremembered figure or the wrong document. A label
and a figure ("Operating income 79,975") are rarely adjacent in a table, where other
years' columns sit between them: a miss on one returns try_instead, the verify_figure
call that checks the number however the row is laid out. Use verify_figure for figures.
Args:
cik: CIK of the filer (e.g. "0000320193")
accession_number: SEC accession number (e.g. "0000320193-25-000079")
filename: The document the text came from (e.g. "aapl-20250927.htm", or an
exhibit such as "q4fy26cfocommentary.htm"), as listed in content_object
or in a search result
quote: The exact text to find (max 1000 characters) | No | Yes | Yes | Yes |
Details
- Registry status
- Active
- Published
- Oct 30, 2026
- Updated
- Oct 30, 2026
- Repository
- Not given
- Categories (suggested)
- Finance and paymentsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared