Skip to main content
Glama

beatandraise.com SEC Filings

Server Details

SEC EDGAR since 1993: search and read filings, insiders, 13F, statements; verify quotes and figures.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 26 tools

Disambiguation3/5

Most tools are individually distinguishable, but several overlap: get_filings and get_filing_detail both return filing metadata/content_object, get_financial_history and get_financial_statements both return statements, and verify_figure/list_figures/check_citations all concern numbers. The long descriptions usually clarify the intended choice, but an agent must read carefully to avoid misselection.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun/resource pattern (get_, list_, search_, verify_, check_, with clear resource names). There is no mixing of camelCase or vague single-word names, so the set is predictable.

Tool Count4/5

26 tools is above the typical 3-15 range, but the server covers several distinct SEC workflows (filings, financials, ownership, Form D, SIC, citation checking). Most tools are substantive; a few could be merged, but the count is defensible for the breadth.

Completeness4/5

The surface covers company lookup, filing search/read, item extraction, statements and history, shares outstanding, insider transactions, 13F holdings, and Form D. Minor gaps remain: no dedicated 13D/13G or proxy-statement extraction, no Form 3/5 tool, and insider coverage starts in 2024.

Available Tools

26 tools
check_citationsCheck Citations in a DraftA
Read-onlyIdempotent
Inspect

Check 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, cite its inputs: up 73% [calc: ref:, ref:] A ref names the exact characters in the document: /@+.

Returns per citation: ok / rounded (your number is the cited figure times a power of ten, rounded), mismatch (the cited characters are a different number), bad_ref (no number at that position), not_derivable (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 highlighted figure in the filing, so a reader can check it.

Args: text: The draft, with [ref:…] / [calc: …] citations (max ~200 KB)

NameRequiredDescriptionDefault
textYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/openWorld; the description goes well beyond them by defining the ref character grammar (<accession>/<filename>@<start>+<len>), the [calc: ref:..., ref:...] convention, the ~200 KB input ceiling, and the full failure taxonomy (rounded, mismatch, bad_ref, not_derivable, unsourced_numbers) with what each means. An agent knows what the tool will and won't accept before calling.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by example-driven syntax, return codes, and a closing instruction — logical order, no filler. Some length is unavoidable for the citation grammar, though the indented inline examples read slightly like formatting artifacts rather than tight prose.

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

Completeness5/5

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

An output schema exists, so return-value explanation isn't strictly required, yet the description still covers input format, failure semantics, size limit, and the follow-up use of linked_text/footnotes. For a one-parameter read-only validator, nothing an agent needs to call it correctly is missing.

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

Parameters5/5

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

The schema is a bare {text: string} with 0% description coverage, so the description carries the whole burden — and does: it specifies the in-text citation syntax, both ref forms, and the max ~200 KB size. That is more than enough for the single required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource — check every number in a draft against the filing characters it cites — and adds the linking outcome. It is immediately distinguishable from verify_figure (single figure check) and verify_quote, which it implicitly routes away from by naming them as ref sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description prescribes the exact workflow: write citation refs after each figure, take refs from list_figures or verify_figure, use [calc: ...] for derived numbers, fix all failures before presenting, then use linked_text/footnotes. That is explicit routing and a clear when-to-call. It stops short of stating any exclusion or when-not-to-use case, so it falls just short of a 5.

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

get_companyGet CompanyA
Read-onlyIdempotent
Inspect

Look 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")

NameRequiredDescriptionDefault
cikYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds genuine domain context: SIC fields appear only 'when known', individuals and most funds have no SIC, SIC is not GICS, and succession_filing is limited to 8-K12B/8-K12G3 from the last five years.

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

Conciseness4/5

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

Front-loaded with the core lookup purpose and well organized into paragraphs by concern. It is somewhat long and spells out return fields even though an output schema exists, which is mildly redundant but still aids interpretation.

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

Completeness5/5

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

An output schema exists, yet the description still explains the conditional fields (SIC, fiscal_year_end, state_of_incorporation, succession_filing) that an agent would otherwise misread. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 0% and the schema is just an untyped string, so the description carries the load: it defines CIK as Central Index Key and gives both accepted zero-padded and unpadded forms ('0000320193' or '320193'). That is meaningfully beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('look up a company by CIK') plus the exact fields returned, and implicitly separates itself from search_companies, which is named as the route for name-based or predecessor-CIK lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is clear: call this when you already hold a CIK, and follow search_companies when the history sits under a predecessor CIK. No explicit exclusion is stated for the name-search case, so it stops just short of full when/when-not guidance.

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

get_documentGet Filing DocumentA
Read-onlyIdempotent
Inspect

Fetch 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///, 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.

NameRequiredDescriptionDefault
cikNo
urlNo
filenameNo
get_markdownNo
accession_numberNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile needs no restating. The description nevertheless adds real behavioral context beyond them: the return format (markdown by default, raw HTML when get_markdown=False), a citation convention (first line is the beatandraise.com viewer link), and the accepted URL shapes. It does not say what happens with very large documents (truncation, size limits), which is the one missing behavioral trait.

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

Conciseness4/5

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

Purpose and the sibling exclusion are front-loaded in the first two paragraphs, with format and identification guidance following. The Args block restates parameter names, but given 0% schema coverage that restatement earns its place. Minor slack in phrasing such as 'a fraction of the document, with a link highlighting it'.

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

Completeness4/5

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

For a read-only fetch tool with an output schema, the description covers what an agent needs: how to identify the document, the two output formats, and the citation convention. The remaining gap is operational behavior on large filings (pagination, truncation, response size), which matters for whole 10-K retrieval and is neither in the description nor the annotations.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the whole burden, and it largely does: every parameter is named with meaning, an example value (cik "0000320193", filename "ef20060722_8k.htm"), a default (get_markdown True) and the fallback behavior for cik ('found from the accession number when left out'). It also documents the two mutually exclusive identification modes (accession_number+filename vs url). The one gap is that it never states as a hard requirement that one of those two modes must be supplied, leaving all-optional params ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Fetch a filing document's content from storage') and immediately distinguishes itself from the closest sibling, get_filing_item, by explaining that the sibling returns a single Item with a highlighting link. An agent can tell which tool to call without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use the sibling ('For one section of a 10-K, 10-Q, 8-K or 20-F ... use get_filing_item instead') and when to use this tool ('to read the actual text of a whole 10-K, 8-K, exhibit, or any other filing document'). The alternative and the selection condition are both explicit, including the negative scoping note that the url is 'not a company website'.

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

get_filing_detailGet Filing DetailA
Read-onlyIdempotent
Inspect

Get 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")

NameRequiredDescriptionDefault
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds real value beyond that: it discloses the shape of content_object (filename, doc_type, description, sequence, markdown availability), the citation URL pattern, and the XBRL R*.htm caveat.

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

Conciseness4/5

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

Front-loaded with the core purpose, then supporting detail about content_object and citation. Dense but every sentence carries information; minor redundancy between the inline Args note and the schema.

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

Completeness4/5

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

With an output schema present, return values need not be explained, yet the description still summarizes content_object fields usefully. Annotations cover safety, and the parameter example fills the 0% schema coverage gap, leaving little an agent would need to infer.

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

Parameters4/5

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

Schema coverage is 0% with one required parameter, so the description must compensate – and it does by giving the expected accession_number format with a concrete example ('0001140361-26-006577'). That is meaningful guidance beyond the bare string type in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get full filing metadata') and immediately clarifies the scope by naming the key payload, content_object. It effectively differentiates itself from get_filings (list) and get_document (read one doc) by describing what content_object contains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to get_document for reading a document and to list_filing_tables for identifying XBRL table pages, which is strong when-to-use guidance. It does not explicitly contrast with get_filings or search_filings for locating a filing, leaving that inference to the agent.

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

get_filing_itemGet Filing ItemA
Read-onlyIdempotent
Inspect

Read 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.

NameRequiredDescriptionDefault
itemYes
partNo
get_markdownNo
accession_numberYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish readOnly/idempotent/non-destructive, and the description still adds real behavioral disclosure: the APPROXIMATE fallback when a heading isn't found, what that fallback span contains, and the highlight_url in the first lines for citation. That is context an agent cannot get from structured fields.

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

Conciseness4/5

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

Well front-loaded — size comparison and fallback caveat come before the arg list, which is the right order. Some prose ('That span contains the item if the filing has it: search within it') is slightly wordier than needed, but nothing is filler.

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

Completeness5/5

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

For a 4-param read tool with an output schema, everything an agent needs is present: when to pick it, fallback behavior, and how to interpret the returned header lines. Return-value structure is correctly left to the output schema.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden and does: accepted item formats ('1A', '7A', '2.02', '16G', or names), the 20-F remapping (Risk Factors in 3.D, MD&A as Item 5), part semantics with the bare-number default, and get_markdown's default and False meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Read one Item of a 10-K, 10-Q, 8-K or 20-F') with concrete examples (Risk Factors, MD&A) and immediately distinguishes itself from get_document by size. An agent can tell exactly what this returns versus a whole-filing read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the choice ('instead of the whole document'), quantifies the savings ('5-15% of the filing'), and routes non-applicable cases elsewhere: 'other forms have no Items: read them with search_document or get_document'. Alternatives and exclusions are both named.

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

get_filingsList FilingsA
Read-onlyIdempotent
Inspect

Query SEC filings by form type, date range, CIK and/or 8-K item.

Returns deduplicated filing metadata sorted by filing date (newest first). Each filing's content_object lists its documents (filename, doc_type, description, sequence; sequence 1 is the primary document); read any of them with get_document(cik, accession_number, filename). A document's link, to cite, is beatandraise_base_url + filename (the beatandraise.com viewer); the filing's own source gives the primary document's link and a ready-made citation. Each filing also carries its items (an 8-K's, e.g. "2.02 Results of Operations and Financial Condition") when it has any. The R*.htm files are XBRL financial-table pages; list_filing_tables says which table each one is.

An 8-K carries a headline when its press release (EX-99.1) has one, e.g. "Tesla Third Quarter 2026 Production, Deliveries & Deployments": read from the release's opening lines by rules, so use it to choose which 8-K to read, not as a quotation (about 2% are another line of the release; verify_quote before quoting). No headline says nothing about the filing: its exhibit may be a deck or an agreement, or it may have no EX-99. An 8-K whose only item is 9.01 and that has no headline files exhibits and nothing else: exhibits_only lists them by type and the SEC's exhibit title ("EX-5.01 Opinion re legality; EX-99.01 Additional exhibits (no press release headline)"), so it holds no financial statements despite its item's name, and is rarely worth reading for 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 to find, say, every director change this week. include_item_text: With item, also return each filing's text of that item (item_texts: item, title, text up to 10,000 characters, highlight_url marking it in the filing), so a screen across companies takes one call. The header only says 5.02; whether it is a director, a CEO or a pay plan is in the text. item_text: Items whose text to return with each filing, for any 10-K, 10-Q or 8-K (not only with item): by number or name, up to 5 comma-separated, e.g. "MD&A", "1A", "Risk Factors", "Part II Item 1A", "5.02". With form="10-Q" and a cik, "MD&A" gives a company's last several MD&As in one call. A filing without that Item says so in its item_texts entry ("not in this filing"). item_text_chars: Characters of text per Item, 1,000-100,000 (default 10,000). The whole page carries at most 500,000 characters of text, so limit is lowered to fit: ask for fewer filings when you want whole MD&As.

NameRequiredDescriptionDefault
cikNo
formNo
itemNo
limitNo
offsetNo
to_dateNo
from_dateNo
item_textNo
item_text_charsNo
include_item_textNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, and the description adds substantial non-obvious behavior: dedup plus newest-first ordering, the ~2% unreliable headline cases with a verify_quote warning, the exhibits-only 8-K caveat, and a 500,000-character page cap that silently lowers limit. These are exactly the traits structured fields cannot convey.

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

Conciseness4/5

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

Front-loaded with purpose and return shape, then args, which is the right order, and the length is defensible for ten undocumented parameters. Still, some passages are heavier than needed, such as the long worked headline example and the EX-5.01 exhibit-title sample, which could be trimmed without losing guidance.

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

Completeness5/5

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

Covers everything an agent needs to call this correctly: what is returned, how documents/items/headlines are represented, citation construction, pagination, and each parameter's semantics. An output schema exists, so the extra return-value detail is bonus rather than filler.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does: it documents all ten parameters with formats, examples, defaults, bounds (limit 1-100, 25 with include_item_text; item_text_chars 1,000-100,000), enum-like value lists for item, and the interaction between item/include_item_text/item_text and form.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource and scope: 'Query SEC filings by form type, date range, CIK and/or 8-K item,' and immediately states the return shape ('deduplicated filing metadata sorted by filing date'). It also routes to the right follow-up tools (get_document, list_filing_tables), so an agent knows exactly what this call produces versus a detail/document fetch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use guidance for the tricky parameters ('Use it instead of reading 8-Ks one by one to find every director change this week') and when to include item text. It also explains default behavior for from_date and item. It never explicitly contrasts with the sibling search_filings, which is the one likely confusion point left unaddressed.

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

get_financial_historyGet Financial HistoryA
Read-onlyIdempotent
Inspect

A company's financial statements from its last several 10-Ks or 10-Qs, in one call.

For trends (revenue, margins, cash flow over years or quarters) instead of calling get_financial_statements filing by filing. Returns each filing, newest first, with its statements as that filing presents them (the same text get_financial_statements gives). They are not combined into one table: a 10-K shows two or three years, so periods repeat across filings (the newest filing's figure is current; it may restate), and labels, line items and scale can differ between filings. Read the figures from each filing yourself.

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 (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: With or without fiscal_year: "Q1", "Q2", "Q3" (a 10-Q) or "FY" (the annual report). There is no Q4 filing: the fourth quarter is in the annual report, as the year. E.g. fiscal_year=2018, fiscal_period="Q1" returns that one 10-Q; fiscal_year=2018 with period="quarterly" returns its Q1-Q3. Each returned filing carries its fiscal_year and fiscal_period. 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.

NameRequiredDescriptionDefault
cikYes
limitNo
beforeNo
periodNoannual
statementsNo
fiscal_yearNo
include_tagsNo
fiscal_periodNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations supply the safety profile (readOnly, idempotent, openWorld), and the description adds genuinely new behavior: filings returned newest first, statements NOT merged into a single table, repeated periods and label/scale drift between filings, XBRL coverage phase-in dates, tag availability lagging one night after filing, and enlarged responses when include_tags is true.

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

Conciseness4/5

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

Purpose and the sibling comparison are front-loaded, and the Coverage and Args blocks are cleanly separated. It is long (~500 words), but nearly every sentence carries actionable information given 8 undocumented parameters; a few clauses on include_tags could be tightened.

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

Completeness5/5

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

Despite having an output schema, the description still explains enough return shape (per-filing statements, lines with concept/members/unit/ref/highlight_url) for the agent to plan usage, and it covers the main failure modes — missing pre-2009 data, missing refs before mid-2019, missing tags on new filings.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning — and it does: defaults and maxima for period/limit, the valid statements enum values, the YYYY-MM-DD format for before, fiscal-vs-calendar year with a Medtronic example, the absence of a Q4 filing, and the cost tradeoff of include_tags.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('A company's financial statements from its last several 10-Ks or 10-Qs, in one call') and explicitly contrasts itself with the sibling it resembles ('instead of calling get_financial_statements filing by filing'). An agent can distinguish the two tools without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (get_financial_statements) and the condition selecting this one (trend analysis across years/quarters). It also routes negative cases: pre-XBRL reports go to get_filing_item, and foreign filers' quarterly 6-K data is declared out of scope.

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

get_financial_statementsGet Financial StatementsA
Read-onlyIdempotent
Inspect

Extract 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.

NameRequiredDescriptionDefault
cikYes
include_tagsNo
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent, and the description layers on substantive behavior the annotations cannot express: XBRL coverage boundaries by company size and date (mid-2009 / mid-2010 / mid-2011), the night-after-filing lag for tags, missing refs for dash (zero) lines and pre-mid-2019 filings, and the larger response size with include_tags.

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

Conciseness4/5

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

Front-loaded with purpose, then workflow, then coverage caveats, then args — the ordering is sensible. The include_tags block is long and paragraph-dense, though nearly every clause carries information an agent would otherwise have to discover by error.

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

Completeness5/5

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

Given a simple 3-parameter read tool with an output schema, the description covers the remaining unknowns: coverage limits, failure mode for early filings, tag latency, and the outbound escalation path for older years. Nothing an agent needs to call it correctly or interpret an empty result is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must carry the load, and it does: cik gets a concrete example, accession_number is scoped to 10-K/10-Q, and include_tags is explained in depth (concept + axis members + unit, full-unit values, printed text, ref for check_citations, highlight_url) along with when it is unavailable. This is meaning well beyond the bare boolean default in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb plus resource ("Extract structured financial statements from a 10-K or 10-Q filing") followed by an explicit enumeration of what comes back (balance sheet, income statement, cash flow, equity, comprehensive income). It is clearly distinguished from siblings get_filing_item (raw Item 8 text) and get_financial_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the prerequisite workflow explicitly: find an accession number with get_filings, then pass it here. It also names the alternative for out-of-coverage filings ("read a 10-K's Item 8 with get_filing_item") and advises reducing statements/filings when include_tags is set.

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

get_fiscal_calendarGet Fiscal CalendarA
Read-onlyIdempotent
Inspect

Get 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 in the window, returned oldest first (1-400, default 40)

NameRequiredDescriptionDefault
cikYes
limitNo
to_dateNo
from_dateNo
fiscal_yearNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real operational context beyond that: flags are "never corrected," ~1% cover disagreement, header-only dates mostly pre-2011, and Q4 has no standalone 10-Q. However it does not disclose result-size or performance characteristics for large windows, and its value here is mostly data semantics rather than tool behavior.

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

Conciseness4/5

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

Front-loaded with the one-line purpose, then usage, then edge cases, then args – a sensible order with no filler. It is dense and field-name-heavy (irregular_quarter, fy_mismatch, duplicate_report), which costs some readability, but essentially every clause carries information an agent would otherwise have to guess.

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

Completeness5/5

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

An output schema exists, yet the description still previews the notable return fields and, crucially, their caveats (period_mismatch resolution, transition filings, amendment_only, first). Combined with the exclusions and pagination semantics, an agent has everything needed to call this correctly without further exploration.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the load, and the Args block does: cik with an example and a pointer to search_companies, from_date/to_date with an explicit YYYY-MM-DD format, fiscal_year with an example, and limit with its 1-400 range, default 40, and the non-obvious "newest N, returned oldest first" semantics. That last detail is unavailable anywhere in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

First sentence gives a specific verb and resource ("Get a company's fiscal calendar") and immediately defines the unit returned: one row per quarter with its own dates. That scope clearly separates it from siblings like get_financial_history, get_financial_statements, and get_filings, which do not carry fiscal-period dates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: "Use it whenever a question names a fiscal period" with three concrete query examples, plus the reason alternative guessing fails (fiscal years ≠ calendar years, 52/53-week weekday drift). It also states the exclusion ("10-K/10-Q filers only: a foreign filer (20-F, 40-F) has no quarterly calendar here") and points to search_companies for the CIK.

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

get_helpGet Help: Coverage and LimitsA
Read-onlyIdempotent
Inspect

What 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")

NameRequiredDescriptionDefault
questionNo
tool_nameNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description discloses that the question is recorded along with all call arguments and is used to prioritize what to add, plus that results are ordered most-relevant-first. It does not describe the shape of the returned entries, but an output schema exists to cover that.

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

Conciseness4/5

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

Front-loaded with purpose, then triggers, then parameter guidance — a sensible order. The clause about recorded arguments and the support-email sentence are slightly rambling for a two-param tool, though the recording note does carry real information.

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

Completeness5/5

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

For a simple two-optional-param helper with an output schema, nothing material is missing: purpose, triggers, both parameters, result ordering, and privacy/recording behavior are all covered.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the full burden: it defines question as the user's need in their own words with concrete examples ("institutional ownership of SPY", "Risk Factors of a 40-F") and tool_name as the tool that fell short, with a sample value. Both optional params are fully explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"What the beatandraise.com tools cover, where they stop, and what to use instead" gives a specific verb+resource (coverage/limits guidance) that no sibling tool provides. It is immediately distinguishable from the lookup tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger conditions are listed: a tool returned nothing, returned an error, returned less than needed, or no tool exists for the request. This is exactly the when-to-use guidance an agent needs to route here instead of retrying a failing sibling.

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

get_holdingsGet 13F HoldingsA
Read-onlyIdempotent
Inspect

Get 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. A "period_note" says when the filer's latest 13F before the period asked for is over a year older (it stopped filing).

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: Get holdings as of this date (YYYY-MM-DD). Returns the most recent 13F filed on or before this date. limit: Max holdings per page (1-5000, default 500) offset: Pagination offset

NameRequiredDescriptionDefault
cikYes
limitNo
offsetNo
periodNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare this is a safe, read-only, idempotent, non-destructive, open-world operation. The description adds substantial behavioral detail beyond that: parsed XML versus text fallback, one row per entry, units in thousands versus dollars depending on filing date, line-based paging for text results, period_note behavior, and SIC classification coverage.

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

Conciseness4/5

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

The description is front-loaded and well structured, moving from purpose to return format to edge cases and then arguments. It is longer than strictly necessary, especially the SIC coverage statistics and get_company cross-reference, but those details are relevant and not filler.

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

Completeness5/5

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

Given the tool's complexity, four parameters, 0% schema description coverage, and the presence of an output schema, the description is complete enough for an agent to call it correctly. It covers fallback text-format filings, paging behavior, period semantics, and the meaning of SIC coverage.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry all parameter semantics. It does: cik is the filer CIK with an example, period means return the most recent 13F filed on or before that date, limit is max holdings per page with range and default, and offset is pagination offset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: get parsed 13F-HR institutional holdings for a filer, including the fields returned. It does not explicitly distinguish this tool from the sibling get_institutional_holders, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful conditional guidance for interpreting XML versus pre-2013 text-format 13F filings, including using search_document for text tables and sic_url from get_company for peer comparisons. However, it does not clearly say when to use this tool versus alternatives such as get_institutional_holders, leaving some usage choice implied rather than explicit.

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

get_insider_transactionsGet Insider TransactionsA
Read-onlyIdempotent
Inspect

Get 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" for Apple) from_date: Start date (YYYY-MM-DD) to_date: End date (YYYY-MM-DD) limit: Max filings to process (1-100, default 20) offset: Pagination offset include_table_ii: Also return Table II lines: options, RSUs and the like (default False) include_footnotes: Also return each line's footnotes (default False)

NameRequiredDescriptionDefault
cikYes
limitNo
offsetNo
to_dateNo
from_dateNo
include_table_iiNo
include_footnotesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare a safe read-only, idempotent, non-destructive operation, but the description adds substantial behavioral context: default Table I-only output, Table II behavior, footnote inclusion, coverage boundaries, transaction-code meanings, and caveats such as counting RSU vestings once. It also warns about the limitations of plan_10b5_1, which is exactly the kind of nuance an agent needs before interpreting results.

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

Conciseness4/5

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

The description is front-loaded with purpose and is generally information-dense, but it is long and repeats the coverage_from date in two sections. Most sentences earn their place because the financial/legal caveats are useful, though the length could be trimmed slightly.

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

Completeness5/5

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

Given the tool's complexity, the output schema, and the annotations, the description is complete. It covers data source, coverage period, default versus optional output, transaction codes, footnote behavior, Table II semantics, and interpretation caveats, leaving no critical gap for correct invocation or interpretation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it does: every parameter is documented in the Args section, including CIK meaning, date ranges, limit as max filings, offset pagination, and the precise effect of include_table_ii and include_footnotes. This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: get parsed Form 4 insider transactions for a company, with source data from Form 4 XML. This is clearly distinct from sibling tools such as get_holdings and get_institutional_holders, and an agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational guidance for optional parameters, especially when to use include_footnotes and include_table_ii, and explains the coverage start date. It does not explicitly compare this tool to sibling tools or state when not to use it, so it falls short of the highest level.

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

get_institutional_holdersGet Institutional HoldersA
Read-onlyIdempotent
Inspect

Who 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 13F filers the name matched; holder.positions gives each quarter's position; holder.not_held_in lists quarters with none. If matched_filers is empty, no 13F filer has that name. With holder the response is lean by default (about 5 KB: no top_holders/buyers/sellers lists); pass detail="full" if you also need those.

  • "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).

Returns, newest complete quarter first (the quarter still being filed is in in_progress_quarter, not in quarters): quarters[]: period, holders, new_holders, exited_holders, shares_held, value_usd, share_classes[] (one per class on the company's cover page: shares_outstanding as of the 10-Q/10-K after the quarter, listed/symbol, held_by_13f, pct_of_class, holders, cusips), share_count_source (the filing the count comes from), holders_url. source.beatandraise_url: the holders page, the human view of the same data.

Report each share class separately; never add classes together (Meta's Class B is unlisted, so no institution can hold it). State the caveats in notes when giving numbers: 13F is as filed and not deduplicated, options are excluded, holdings can exceed 100% for heavily shorted stocks, and a "new position" can be a manager whose previous 13F was late or a placeholder. Cite share_count_source's link 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) 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 latest quarter (1-100, default 25) detail: "lean" or "full". Default: lean when holder is given (just the holder's positions, share classes and sources), full otherwise (adds top holders, buyers, sellers, new positions, exits and 5%+ holders)

NameRequiredDescriptionDefault
limitNo
detailNo
holderNo
companyYes
quartersNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds substantial behavioral context: response size expectations for holder queries (~5 KB), the effect of detail="full", caveats about 13F data (not deduplicated, options excluded, >100% possible, new positions can be artifacts), and guidance on which fields to read for common questions.

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

Conciseness4/5

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

The description is well-structured and front-loaded with purpose, use cases, and arguments. However, it includes a lengthy enumeration of return fields (quarters, share_classes, etc.) even though an output schema exists, making it slightly more verbose than strictly necessary. Still, the information is dense and largely earns its place.

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

Completeness5/5

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

Given the tool's complexity (5 parameters, 13F data domain, output schema present) and the description's coverage of purpose, alternatives, usage scenarios, parameter semantics, caveats, and return field guidance, the definition is complete enough for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the full burden. It does: company accepts ticker or CIK (with explicit warning it's the company's CIK, not the institution's), quarters range and default, holder can be a name fragment or filer CIK, limit range and default, and detail values with default behavior explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'Who holds a company, from 13F filings: how much of each share class institutions hold, and how that changed quarter by quarter.' It also directly distinguishes itself from the sibling tool get_holdings by specifying that this is the company-side view while get_holdings is the manager-side view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases with example questions, tells the agent when to use holder vs. top_holders vs. large_holders_5pct, explains the default lean behavior when holder is provided, and notes when to pass detail="full". It also clarifies that get_holdings is the alternative for manager-side queries.

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

get_private_offeringGet Private Offering (Form D)A
Read-onlyIdempotent
Inspect

Get 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"

NameRequiredDescriptionDefault
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile needs no restating. The description adds real substance beyond that: the breadth of the payload (co-issuers, related persons with CRD numbers, sales compensation recipients, filer notes, signatures) and the ordinal ordering of offering_history, which tells the agent the response is a complete single-filing record rather than a summary.

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

Conciseness4/5

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

Front-loaded with the action and the key argument, followed by a payload inventory and an args block. The middle sentence is a long comma-and-semicolon enumeration, but each listed field group carries distinct information; only the offering_history gloss is close to excess given an output schema exists.

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

Completeness4/5

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

For a single-parameter lookup with an output schema and full safety annotations, the definition covers the entry path, the identifier format, and the scope of the returned record. The remaining gap is failure/not-found behavior, which is minor here.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the parameter, and it does: it names the argument "accession_number" as a Form D accession number and supplies a concrete format example ("0001104659-26-114962"). It still does not say whether the dashed or undashed form is accepted, which keeps it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line gives a specific verb and resource ("Get one Form D filing in full, by accession number") and immediately attributes the identifier to its sibling search_private_offerings. An agent can distinguish this from search_private_offerings without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Naming "(from search_private_offerings)" makes the intended workflow explicit: search first, then fetch the full record by accession number. There is no statement of when-not to use it or of failure behavior for an unknown accession number, so it stops short of full when/when-not guidance.

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

get_shares_outstandingGet Shares OutstandingA
Read-onlyIdempotent
Inspect

Get 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_date: Latest as-of date (YYYY-MM-DD)

NameRequiredDescriptionDefault
cikYes
to_dateNo
from_dateNo
share_classNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover read-only/idempotent/no-destructive safety; the description adds substantial behavioral context beyond that: counts are as-filed and never split-adjusted, rows are ordered oldest-first, one row per class and as-of date, coverage starts in 2009 and only for XBRL-tagged filers, 20-F/40-F filers yield roughly annual windows, filer errors are returned as filed, and split listing depends on a subsequent restatement. That is exactly the kind of non-obvious behavior an agent needs before trusting the output.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a single dense block of edge-case prose (split detection heuristics, 1000x tag corrections, combined ratios, multi-class member names, 2020 Apple example) with no bullets or grouping, so key calling information competes with domain trivia. Much of it is valuable, but the agent must read the whole wall of text to extract the routing decision.

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

Completeness5/5

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

For a domain-specific historical-data tool this is thorough: it covers coverage window, ordering, multi-class naming, the 'listed' ticker mapping, as-filed fidelity, and error passthrough, and it explains the returned split/restatement fields. With an output schema present, that return-value detail is redundant but nothing an agent needs in order to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the burden, and it supplies a brief Args section: CIK with an example, share_class 'as returned in share_class', from_date with YYYY-MM-DD format, to_date as 'Latest as-of date'. This clarifies that filtering is on as-of date rather than filing date, which the schema does not, but it omits the null defaults, gives no format hint for to_date, and the share_class phrasing is self-referential and circular.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb and resource (share counts over time) and pins the exact data source (cover page of 10-K/10-Q/20-F/40-F, dei:EntityCommonStockSharesOutstanding). It also differentiates from the general filing-reading siblings by stating 'Use this for share-count history, dilution, buybacks and splits instead of reading filings one by one.' No ambiguity about what is returned or where it comes from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly enumerates the use cases (share-count history, dilution, buybacks, splits) and tells the agent not to read filings one by one, plus a diagnostic rule: 'a ratio_to_previous far from 1 with no split listed is worth checking in the filing.' However, it never names a concrete sibling tool (e.g. get_financial_history or verify_figure) as an alternative for the same question, so routing is implied rather than explicit.

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

list_companies_by_sicList Companies by Industry (SIC)A
Read-onlyIdempotent
Inspect

List 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, 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).

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") query: with a code: only companies whose name or ticker contains this page: with a code: page number, 100 companies per page (default 1) listed_only: with a code: only companies that have an exchange ticker (default True). Set False to include the many dormant, delisted and asset-backed entities that carry the same code.

NameRequiredDescriptionDefault
pageNo
queryNo
industryYes
listed_onlyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, and the description adds real context beyond them: pagination at 100 per page, ticker-holding companies ordered first, listed_only defaulting True and what setting it False surfaces (dormant, delisted, asset-backed entities). The caveats that SIC is assigned at registration, is not GICS/NAICS, and is absent for individuals and most funds are exactly the kind of domain trap an agent needs flagged.

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

Conciseness4/5

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

Front-loaded with the action and an example code, then the fallback, then caveats, then args. The closing 'Args:' block largely restates the prose above (industry, page size, listed_only), so it is slightly longer than strictly necessary, but nothing is buried or wasteful enough to hinder scanning.

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

Completeness5/5

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

An output schema exists, yet the description still tells the agent the shape of a row and the ordering, and it fully covers the dual-mode input, the drill-down workflow, and the classification caveats. Nothing needed to call this correctly or interpret results is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the full burden and does: industry accepts either a 3-4 digit code or an industry word, query filters name/ticker with a code, page is 1-indexed at 100 per page, and listed_only's default and effect are spelled out. Each of the four parameters is given meaning the bare schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the companies in an industry') and pins it to the SEC's SIC classification, which separates it from search_companies and list_sic_codes. It also names the exact fields returned (CIK, name, ticker, state, fiscal year end), so an agent knows what it gets without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: use get_company or search_companies for a company's own code, list_sic_codes for the whole classification, and this tool for the companies in a code. It even handles the unknown-code case by describing the word-lookup fallback on the same tool, then tells the agent to re-call with the returned code.

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

list_figuresList Figures in a DocumentA
Read-onlyIdempotent
Inspect

List 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)

NameRequiredDescriptionDefault
cikYes
nearNo
limitNo
filenameYes
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly/idempotent/non-destructive/openWorld); the description adds the domain-critical behavior that figures arrive as unscaled digit strings that must be multiplied by a power of ten, and the rounding constraint that rules out citing 416,161 as $416.9B. Also discloses volume (~2,000 vs ~400) and the hl deep-link construction.

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

Conciseness4/5

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

Front-loaded with purpose then a concrete JSON entry example, then the scale rule, then filtering and linking. Slight redundancy between the opening line and 'Each entry is a number with its label', but no sentence is wasted given the 0% schema coverage.

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

Completeness5/5

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

An output schema exists, so return values needn't be enumerated, yet the description still supplies the interpretive layer the output schema can't (units/power-of-ten scaling, column ordering). Combined with filtering and deep-link guidance, an agent has everything needed to call and use the result correctly.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden and does so: cik/filename carry format examples, `near` is defined as case-insensitive substring on the label with realistic examples, and `limit` is given both range (1-2000) and default (300), matching the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List the numbers a filing document actually states') and immediately characterizes the return unit as a labelled figure with digits stripped of formatting. That framing distinguishes it from list_filing_tables (tables) and search_document (text search) without needing either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operational guidance: use `near` for label filtering, filter mandatory for 10-Ks (~2,000 figures) but optional for press releases (~400), derive scale from label/table heading, assume current-period-first column order but confirm. It stops short of naming alternative tools (e.g. verify_figure) for the case where you already have a number and want to check it.

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

list_filing_itemsList Filing ItemsA
Read-onlyIdempotent
Inspect

List 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")

NameRequiredDescriptionDefault
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover safety (readOnly, idempotent, non-destructive), and the description adds substantive behavior beyond them: items are located by document headings rather than literal string matching, so TOCs and cross-references are never mistaken for sections. It also explains the not_located semantics with concrete causes (Item 1C pre-2023, 10-K/A with only Part III, unreported 8-K items, or missed headings), which no annotation conveys.

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

Conciseness4/5

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

Front-loaded with purpose and return shape, then fallbacks and caveats in descending priority — the ordering is correct. It runs longer than most definitions, but nearly every sentence (heading-detection, not_located causes, sibling routing) carries non-redundant information; only the entry-field enumeration slightly overlaps the output schema.

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

Completeness5/5

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

For a one-parameter read tool with an output schema and full safety annotations, nothing an agent needs is missing: valid inputs, sibling routing, not_located interpretation, and fallback behavior are all covered. Return values are explained even though the output schema already exists, which is surplus rather than a gap.

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

Parameters4/5

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

With 0% schema coverage on the single required parameter, the description must carry the load, and it does: it names the valid form types and gives a concrete accession-number example format ("0000320193-25-000079"). It stops short of stating the format rules explicitly (10-digit filer prefix, year, sequence), which would have made it a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('List the Items of a 10-K, 10-Q, 8-K or 20-F') and immediately bounds the deliverable: which sections exist and where. It also enumerates the per-entry fields (item, part, SEC title, filer heading, length, highlight_url), so an agent knows exactly what it gets without opening the output schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes: 'Read one with get_filing_item' for section text, and 'Other forms (6-K, 40-F, DEF 14A, S-1...) have no numbered Items: read them with search_document or get_document.' It even covers the not_located edge case and states get_filing_item still answers for those, so both the primary and fallback paths are named.

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

list_filing_tablesList Filing TablesA
Read-onlyIdempotent
Inspect

List every R*.htm financial table in a filing (10-K, 10-Q, S-1, etc.).

Returns one entry per 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")

NameRequiredDescriptionDefault
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond annotations: it names FilingSummary.xml as the source, describes one-entry-per-Report behavior, and explains that an empty list typically means no FilingSummary.xml or no indexing yet. This is useful behavioral disclosure, though not exhaustive about return ordering or limitations.

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

Conciseness5/5

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

The description is front-loaded with the core action, then explains return shape, canonical types, empty-list semantics, and the single argument. Each sentence adds useful context without wasteful repetition.

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

Completeness5/5

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

Given a single required parameter, rich annotations, and an output schema, the description is complete enough to call the tool correctly. It explains the source data, what entries contain, how to use the filename, example canonical roles, and what an empty result means.

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

Parameters4/5

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

Schema coverage for accession_number is 0%, so the description must compensate. It does so by defining the parameter as an SEC accession number and providing a concrete example format ('0000320193-25-000079'), which is important for correct invocation. For a single required parameter, this is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('List every R*.htm financial table in a filing') and clearly explains what is returned: one entry per <Report> from FilingSummary.xml. It also distinguishes itself from get_document by noting the returned filename is what you pass to that sibling, and explains the canonical xbrl_role_normalized field.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use case: finding financial tables and locating statements like the income statement across filers via canonical roles. It also explains the empty-list condition, which helps an agent interpret results. It does not explicitly compare itself to list_filing_items or get_financial_statements, but the context is strong enough for a 4.

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

list_sic_codesList SIC Industry CodesA
Read-onlyIdempotent
Inspect

List 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)

NameRequiredDescriptionDefault
queryNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds real behavioral context beyond them: result ordering (most companies first), a hard cap of 50, the shape of each row, and the volume cost of the no-query path. That cost/benefit disclosure is exactly what annotations can't express.

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

Conciseness4/5

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

Front-loaded with the purpose and the return shapes, with no filler sentences. The trailing "Args:" block duplicates the schema's optional query and is the one piece that doesn't earn its space.

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

Completeness5/5

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

An output schema exists, yet the description still tells the agent enough about both return modes to choose correctly and to consume the result. Nothing needed to invoke this tool correctly is missing.

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

Parameters4/5

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

The single parameter has 0% schema coverage, so the description must carry it, and it does: query is a word matched against industry titles, with concrete examples ("software", "bank", "oil", "pharmaceutical"), marked optional, and its absence is defined. It stops short of stating the matching rule (substring/prefix/case), leaving a small ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the SEC's SIC industry codes") and immediately names the downstream sibling it feeds, list_companies_by_sic. It also explicitly distinguishes SIC from GICS and NAICS, which prevents a whole class of misclassification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use branches: with a query you get matching codes ranked by company count; with no query you get all ~440 codes, and it advises "prefer a query." It also routes the agent onward (list_companies_by_sic for a code, get_company for a single company's own code).

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

search_companiesSearch CompaniesA
Read-onlyIdempotent
Inspect

Search 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)

NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, open-world, non-destructive search. The description adds useful domain behavior beyond annotations, especially the meaning of succession_filing and how predecessor filings may be filed under a different CIK.

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

Conciseness4/5

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

The description is front-loaded with the core search behavior and return data, then adds a useful edge-case paragraph. It is longer than strictly necessary, but every section has a clear purpose and the Args block is efficient.

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

Completeness4/5

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

An output schema exists, so the description needn't fully document return values, but it still provides helpful context about CIK, names, tickers, and SIC fields. Combined with the successor-filing explanation and parameter details, it is complete enough for an agent to invoke correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden and mostly compensates: it explains query as company name or ticker with examples, and limit as max results with range 1–50 and default 10. It could be slightly more precise about matching behavior, but the essential parameter meaning is present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: search for companies by name or ticker. It also clarifies the return contents (CIK, known names, ticker symbols, SIC code/name) and states its role in finding a company's CIK before using other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says to use this tool to find a company's CIK before using other tools, which is strong routing guidance among siblings. It also explains the successor-filing edge case and points to search_document for predecessor lookup, though it does not explicitly contrast with similar discovery tools like list_companies_by_sic.

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

search_documentSearch Within a FilingA
Read-onlyIdempotent
Inspect

Search 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 is kept: "3,007" or "464,391" is searched as one figure.

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)

NameRequiredDescriptionDefault
cikNo
queryYes
filenameNo
context_linesNo
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/destructive=false, yet the description adds real behavioral context: a 12-file cap on the all-documents search, raw-XML handling for XML-only forms, and the per-file source URL for citation. It does not discuss truncation behavior when many lines match, which is the remaining gap.

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

Conciseness4/5

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

Front-loaded with purpose and return shape, then scope behavior, then a numbered workflow. The trailing 'Args:' block largely restates the schema, which is mild redundancy rather than noise, but it slightly bloats an otherwise tight description.

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

Completeness5/5

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

For a 5-parameter tool with an output schema, everything an agent needs to call it correctly is present: required vs optional, fallback derivation of cik, scope of the search, result shape, and citation guidance. Return-value detail is appropriately deferred to the output schema.

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

Parameters5/5

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

Schema coverage is 0%, so the description must carry the burden and it does: it explains accession_number format, comma-separated query semantics (including the comma-in-number rule), that cik is derived when omitted, filename's all-vs-one behavior, and context_lines' 0-50 range with default 10.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search within a filing's documents') plus the return shape ('matching lines with context'). It is clearly distinguished from siblings like get_document (retrieval) and search_filings (filing-level discovery) via the workflow section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit three-step workflow naming get_filings and get_filing_detail, plus the key selection rule: omit filename to search all documents, include it to search one. Exclusions and ordering are spelled out rather than inferred.

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

search_filingsSearch FilingsA
Read-onlyIdempotent
Inspect

Full-text search across all SEC filing content.

Returns matching documents, relevance-ranked, with facets by form type and year. 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.

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 confidentiality agreement", not the company name in query. Without it every company's filings are searched, and a name in query is matched as words. year: Filter by filing year (e.g. "2025") limit: Results per page (1-100, default 10; excerpts only up to 10) page: Page number (0-indexed)

NameRequiredDescriptionDefault
cikNo
formNo
pageNo
yearNo
limitNo
queryYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, so the bar is low, yet the description adds substantial behavior beyond them: relevance ranking, facets by form type and year, excerpt inclusion conditioned on limit<=10, pagination via page=, and a coverage_note in the response. Nothing important about the call's behavior is left implicit.

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

Conciseness4/5

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

Front-loaded with what it does, then return shape, then routing, then coverage, then args — a logical order with no filler. The Args block restates some of the body (e.g. limit/excerpts) and the support email adds a little bulk, but the redundancy is mild and aids scanning.

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

Completeness5/5

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

Covers query semantics, filtering, result shape, excerpt behavior, pagination, and coverage boundaries, and an output schema exists so return values need no further explanation. Complete enough for an agent to call it correctly on the first try.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and does: it documents all six parameters with examples, including the critical cik-vs-company-name guidance with a worked example and the limit/excerpt interaction that the schema cannot express. This is exactly what a low-coverage schema needs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Full-text search across all SEC filing content') and immediately differentiates from siblings: search_document for exhaustive occurrences in one document, get_filings for older filings. An agent can route correctly without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing rules: use search_document for every occurrence in one document, get_filings + get_document for pre-2020 filings, and a concrete exclusion list of forms not covered. Also states the non-obvious failure mode (a search for an earlier year returns nothing).

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

search_private_offeringsSearch Private Offerings (Form D)A
Read-onlyIdempotent
Inspect

Search 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 (CIK, name, city, state, entity type, year of incorporation), industry group and fund type, revenue or net-asset-value range, exemptions claimed (code and meaning), securities offered, date of first sale, total offering amount (null with offering_amount_indefinite=true when the filer wrote "Indefinite"), total amount sold so far, remaining, minimum investment, number of investors and non-accredited investors, sales commissions, finders' fees, proceeds paid to executives/directors/promoters, and counts of related persons and sales recipients. totals sums the WHOLE match, not just the page, and totals.by_category breaks it down 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 - $100,000,000, Over $100,000,000, Decline to Disclose, Not Applicable About 82% of filers choose Decline to Disclose for revenue (nearly all funds for NAV), so a size filter finds only those that disclosed; for "smaller raises" filter on amounts instead (max_sold, max_offering) and say which you used. Examples from real filings: Founders Fund Growth IV, LP -> Pooled Investment Fund / Venture Capital Fund Blackstone Private Equity Strategies Fund L.P. -> Pooled Investment Fund / Private Equity Fund Renaissance Institutional Diversified Global Equities Onshore Fund -> Pooled Investment Fund / Hedge Fund BlackRock Private Equity Co-Investments 2025 (Lux) SCSp -> Pooled Investment Fund / Other Investment Fund Alexander Series Trust (a cash fund) -> Pooled Investment Fund / Other Investment Fund New York Life Insurance & Annuity Corp -> Insurance Blackstone Real Estate Income Trust -> REITS and Finance Blue Owl Real Estate Exchange VI DST (a real estate syndication) -> Other Real Estate Space Exploration Technologies (SpaceX), X.AI Holdings, Databricks -> Other Technology Koios Medical -> Biotechnology The filer picks the category, so similar vehicles can land in different ones (a single-deal SPV may be Pooled Investment Fund or Other; some real estate syndications tick "pooled investment fund interests" as the security while choosing a real estate group). The securities field (pooled_fund, equity, debt...) is a second, independent signal.

How to read the numbers:

  • A Form D/A restates the whole form, and total_amount_sold is cumulative. amendments="latest" (default) returns each offering once, at its newest filing, so sums never double count; "new" returns only original notices filed in the date range (new raises); "all" every filing.

  • For a Pooled Investment Fund, above all an evergreen or cash fund with an Indefinite offering, amount sold is cumulative subscriptions since the offering began (money in and out), not capital raised: Alexander Series Trust reports $591 billion. Read by_category before adding categories together, and say which categories a total includes.

  • Dates filter the filing date, not the date of first sale.

  • Form D says where the issuer is (state) and where paid salespeople solicited (solicited_in), never where investors live. Use get_private_offering for one filing in full (people, placement agents, offering history).

Args: q: Issuer name contains (e.g. "Databricks"). Also matches funds and SPVs named after a company ("Gaingels Databricks 2023 LLC"), which are investors in it, not the company. cik: Issuer CIK; matches primary issuer or co-issuer. For one company's own filings, find its CIK with search_companies and pass it here rather than q. industry: One or more SEC industry groups from the list above, comma-separated exclude_industry: Industry groups to leave out, comma-separated (e.g. "Pooled Investment Fund" for operating companies only) fund_type: One or more of Hedge Fund, Private Equity Fund, Venture Capital Fund, Other Investment Fund revenue_range: One or more SEC revenue ranges from the list above, comma-separated nav_range: One or more SEC net asset value ranges from the list above, comma-separated exemption: "506(b)", "506(c)", "506" (any Rule 506 incl. pre-2013), "504", "4(a)(5)", "3(c)(1)", "3(c)(7)"... security: equity, debt, option_warrant, security_to_be_acquired, pooled_fund, tenant_in_common, mineral_property, other state: Issuer's state/country code, e.g. "CA", "NY", "X0" (United Kingdom) solicited_in: Two-letter state where a paid placement agent solicited (offerings with no paid agent never match) recipient: Placement agent / broker-dealer name contains, or its FINRA CRD number (e.g. "7691" = Merrill Lynch) person: Related person's name contains (executive officer, director, promoter) from_date: Filing date from (YYYY-MM-DD) to_date: Filing date to (YYYY-MM-DD) min_sold: Minimum total amount sold, USD max_sold: Maximum total amount sold, USD min_offering: Minimum total offering amount (the planned raise), USD max_offering: Maximum total offering amount, USD (Indefinite offerings never match) amendments: "latest" (default), "new" or "all" — see above sort: "date" (newest first, default), "sold" or "offering" (largest first) limit: Results per page (1-100, default 20) offset: Pagination offset

NameRequiredDescriptionDefault
qNo
cikNo
sortNodate
limitNo
stateNo
offsetNo
personNo
to_dateNo
industryNo
max_soldNo
min_soldNo
securityNo
exemptionNo
from_dateNo
fund_typeNo
nav_rangeNo
recipientNo
amendmentsNolatest
max_offeringNo
min_offeringNo
solicited_inNo
revenue_rangeNo
exclude_industryNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare this is a safe, read-only, idempotent search, and the description adds substantial behavioral context beyond them: amendments restate the whole form, `total_amount_sold` is cumulative, totals cover the WHOLE match not just the page, dates filter filing date rather than first-sale date, and state/solicited_in never indicate investor location. It also warns that Pooled Investment Fund amount sold can be cumulative subscriptions (e.g. $591 billion for Alexander Series Trust), which an agent could easily misinterpret.

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

Conciseness4/5

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

The description is long, but the complexity and 23 parameters justify much of the length, and it is organized into purpose, result shape, categories, reading the numbers, and Args. Some material, particularly the long list of real-filing examples and repeated category enumerations, could be trimmed without losing essential guidance.

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

Completeness5/5

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

Given a 23-parameter search with 0% schema description coverage, the description is complete enough for correct invocation: it covers result shape, totals behavior, category vocabularies, amendment semantics, date semantics, amount caveats, and every argument. An output schema exists, so it does not need to explain return values, though it usefully describes the totals structure anyway.

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

Parameters5/5

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

Schema description coverage is 0% across 23 parameters, so the description must carry all parameter meaning, and it does: every argument is listed with examples, enum-like values, comma-separated semantics, and edge cases (`recipient` accepts a FINRA CRD like "7691" = Merrill Lynch, `solicited_in` never matches offerings with no paid agent, `q` also matches SPVs named after a company). It even explains the full SEC industry and fund_type vocabularies and issuer-size ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search Form D filings: private placements and private funds', and scopes it to Regulation D exemptions since 2009. It also explicitly distinguishes this search tool from `get_private_offering` for a single filing, and from `search_companies` when you need an issuer CIK.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing rules: use `get_private_offering` for one filing in full, use `search_companies` to find a CIK before passing `cik`, and use amount filters instead of size filters when looking for smaller raises. It also documents when `max_offering` will never match Indefinite offerings and how `amendments` modes change what is returned.

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

verify_figureVerify a FigureA
Read-onlyIdempotent
Inspect

Check 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.

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

NameRequiredDescriptionDefault
cikYes
labelNo
valueYes
filenameNo
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so safety is covered. The description adds real behavioral context (digit-only comparison, magnitude-blind matching, ranking by exactness and label overlap, 10-match cap, search scope controlled by filename), but a 3 is appropriate because much of the text also repeats what the schema and return contract already convey.

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

Conciseness4/5

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

Front-loaded with the core assertion and highly dense, but the matching-rule paragraph is long and repeats the magnitude caveat twice (once in the rules, once in the return section). Slightly verbose for the payload it delivers.

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

Completeness5/5

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

An output schema exists, yet the description still names the return fields and explains how to use highlight_url and interpret found=false, which is exactly the operational guidance needed. Nothing required to invoke or act on results is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden and largely does: cik gets a format example, value gets detailed normalization rules and a one-significant-digit caveat, label is explained as a ranking signal, and filename explains its scoping effect. Only accession_number lacks a format example, a minor gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("check that a number ... appears in a filing") plus the exact matching semantics. It is clearly distinguishable from siblings like check_citations (citations) and verify_quote (quotes) without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it (before attributing a figure to a filing), what found=false means and how to react (do not attribute; say it was calculated and cite inputs), and how to handle derived numbers. Covers both the positive and negative cases.

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

verify_quoteVerify a Quote or FigureA
Read-onlyIdempotent
Inspect

Check 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.

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)

NameRequiredDescriptionDefault
cikYes
quoteYes
filenameYes
accession_numberYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description goes well beyond that: exact-match semantics with whitespace, table-cell, dollar-sign and curly-quote tolerance, occurrence handling guidance, and what found=false plus numbers_elsewhere mean. This is real behavioral context an agent cannot get from annotations.

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

Conciseness4/5

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

Front-loaded with the core purpose and the usage rule, and the args block is justified here because the schema is bare. It runs somewhat long and restates return values that also appear in the output schema, which is minor redundancy.

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

Completeness5/5

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

Covers all four required parameters, matching strictness, multi-occurrence disambiguation, and the negative-result path, so an agent can call it and interpret it correctly without further hints. Nothing material is missing even with a 0%-described schema.

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

Parameters5/5

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

Schema coverage is 0% and the schema has no param descriptions, so the description carries the full burden — and it does: examples for cik and accession_number, guidance on where filename comes from (content_object or a search result, exhibits included), and a 1000-character cap on quote with formatting advice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Check that a figure or sentence really appears in a filing document') plus the added value (a highlight link), which is enough for an agent to know what it gets. It does not explicitly distinguish itself from the sibling verify_figure, leaving some ambiguity about which one to pick for pure numeric checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('Use this before stating any number or quotation from a filing'), explains why a whole-document link is insufficient, and prescribes the correct input shape with examples. It also covers the failure path: if found is false, consult numbers_elsewhere rather than presenting the text as a quote.

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

Tool Schema Changelog

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

  1. 26 tool updates
    • First observedcheck_citations
    • First observedget_company
    • First observedget_document
    • First observedget_filing_detail
    • First observedget_filing_item
    • First observedget_filings
    • First observedget_financial_history
    • First observedget_financial_statements
    • First observedget_fiscal_calendar
    • First observedget_help
    • First observedget_holdings
    • First observedget_insider_transactions
    • First observedget_institutional_holders
    • First observedget_private_offering
    • First observedget_shares_outstanding
    • First observedlist_companies_by_sic
    • First observedlist_figures
    • First observedlist_filing_items
    • First observedlist_filing_tables
    • First observedlist_sic_codes
    • First observedsearch_companies
    • First observedsearch_document
    • First observedsearch_filings
    • First observedsearch_private_offerings
    • First observedverify_figure
    • First observedverify_quote

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Query SEC EDGAR for company filings, financial data, and executive disclosures. Search by company name or ticker, retrieve 10-K/10-Q/8-K filings, and extract structured financials — backed by the official SEC EDGAR API, built for AI agents.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables to search and retrieve SEC EDGAR filings, insider transactions, major shareholders, and executive compensation data through natural language.
    11 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching SEC EDGAR for companies, retrieving recent filings (e.g., 10-K, 10-Q), and accessing structured XBRL financial facts.
    42 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying SEC EDGAR for Form 4 insider trades, 8-K material events, and Schedule 13D/G ownership filings for US-listed companies, with ticker, company name, or CIK lookup.
    29 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources