Cited search over SEC filings, earnings transcripts and EU regulation, with fetch mode. 14 tools.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <AETHER_API_KEY> — free key at https://aether.evidinvest.com/developer/register (anonymous calls allowed at 5/hour)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Search SEC filings (10-K, 10-Q, 8-K, registration statements/prospectuses and press exhibits; S&P 500 coverage, ~10 years) with hybrid semantic + keyword retrieval. TWO MODES. Search mode (pass `query`): results ranked by relevance, highest first. FETCH MODE (omit `query`): no ranking at all — pass an issuer plus any of form_type / fiscal_year / accession_number / section and get that filing's sections back in filing-date-desc then document order, in tens of milliseconds. Use fetch when you already know WHICH document you want and only need its text. ALWAYS pass `issuer` (ticker, cik or company_name) — the company the question is about — plus `fiscal_year` and/or `form_type` when you know them. Scoped calls are fast and precise. A call with no issuer runs as scope=cross_company: slower, ranked by relevance only, and the response sets `quality_caveat` — check for that field. Use scope=cross_company deliberately only for questions that are genuinely about many companies ("which filers name NVIDIA as a supplier"). Built for agents: every hit is a ready-to-cite payload — exact filing-section text, form type, filing date, accession-numbered citation, source URL and a 0-1 confidence score — no HTML parsing, no EDGAR pagination. Use for revenue/segment figures, risk factors, M&A and contract terms, customer/supplier concentration, and any claim that must trace to a primary source. Fetch mode pages: pass the response's `next_offset` as `offset` to read past `limit`. Returned windows overlap; counts of a term over returned text are not document counts. `partial: true` means retrieval degraded; an empty result is then not proof of absence. Coverage is NOT US-only: Sweden/Bolagsverket, Japan/EDINET, Korea/DART annual reports are included. Those issuers have no US ticker — pass `issuer.company_name` (e.g. "Sivers Semiconductors", "Samsung Electronics", "Ajinomoto") or scope a whole market with `jurisdiction` (["SE"], ["JP"], ["KR"]).
Exact SEC CIK values to scope retrieval. Values are normalized to 10 digits.
Natural language search query. OMIT IT for fetch mode: with no query nothing is embedded or scored and the matching sections come back in filing-date-desc then document order. Fetch mode requires an identifier (issuer.ticker / issuer.cik / issuer.company_name / cik[] / accession_number) — a query-less call without one is rejected.
issuer (default): results limited to the resolved company. cross_company: search all filers — for questions like "who names NVIDIA as a supplier". Cross-company results are slower, relevance-ranked only, and always carry `quality_caveat`.
public_equity = single-company filing search; supply_chain = cross-company supplier/customer relationship evidence; auto (default) = detect from the query.
The company the question is about. Pass at least one of ticker (e.g. "NVDA"), cik (e.g. "1045810"), or company_name (required for non-US issuers, which have no US ticker). Scopes retrieval to that filer: fast and precise. Strongly recommended on every call, and REQUIRED in fetch mode.
Fetch mode only: paging cursor. Omit (or 0) for the first page, then pass the previous response's `next_offset` until it is absent. Opaque: it counts chunk rows, not results.
Retrieval profile. `hybrid` (default) ranks by the engine's own fused score (saturated lexical + vector cosine), highest first. `bm25` is the lexical-only fallback. `hybrid_rerank` and `hybrid_rerank_tickerprior` are accepted as aliases of `hybrid` for one release — the cross-encoder they named was removed on 2026-09-11.
Filing section(s), matched case-insensitively as a substring of the stored label — "Item 1A" matches "Item 1A. Risk Factors". In fetch mode this is how you ask for one part of a filing.
Only return these filing forms, for example ["20-F"] or ["6-K"].
Issuer's fiscal year as the company labels it (NVIDIA FY2027 = year ending Jan 2027). Resolved from XBRL DEI fiscal-year focus where available, else from the issuer's fiscal year-end; an empty year widens ±1 with a caveat.
Scope to non-US issuer jurisdictions (ISO-3166 alpha-2): "SE" (Sweden/Bolagsverket), "JP" (Japan/EDINET), "KR" (Korea/DART). These carry no US ticker and are otherwise buried by SEC-centric ranking. US filings have an empty jurisdiction tag, so this filter is for non-US scoping only — omit it to include US (the default). A named non-US issuer surfaces even without this filter, via the company-name anchor.
Prefer newer filings when relevance scores are close. Automatically enabled for latest/current/guidance queries.
Response shape. 'section' (default) returns the full SEC section the matching chunk belongs to. 'chunk' returns the matching window only. 'both' returns both.
Exact SEC accession number. When set, retrieval is hard-scoped to that filing.
Exclude filing forms. Company searches already suppress fund/proxy forms by default.
Search SEC filings (10-K, 10-Q, 8-K, registration statements/prospectuses and press exhibits; S&P 500 coverage, ~10 years) with hybrid semantic + keyword retrieval. TWO MODES. Search mode (pass `query`): results ranked by relevance, highest first. FETCH MODE (omit `query`): no ranking at all — pass an issuer plus any of form_type / fiscal_year / accession_number / section and get that filing's sections back in filing-date-desc then document order, in tens of milliseconds. Use fetch when you already know WHICH document you want and only need its text. ALWAYS pass `issuer` (ticker, cik or company_name) — the company the question is about — plus `fiscal_year` and/or `form_type` when you know them. Scoped calls are fast and precise. A call with no issuer runs as scope=cross_company: slower, ranked by relevance only, and the response sets `quality_caveat` — check for that field. Use scope=cross_company deliberately only for questions that are genuinely about many companies ("which filers name NVIDIA as a supplier"). Built for agents: every hit is a ready-to-cite payload — exact filing-section text, form type, filing date, accession-numbered citation, source URL and a 0-1 confidence score — no HTML parsing, no EDGAR pagination. Use for revenue/segment figures, risk factors, M&A and contract terms, customer/supplier concentration, and any claim that must trace to a primary source. Fetch mode pages: pass the response's `next_offset` as `offset` to read past `limit`. Returned windows overlap; counts of a term over returned text are not document counts. `partial: true` means retrieval degraded; an empty result is then not proof of absence. Coverage is NOT US-only: Sweden/Bolagsverket, Japan/EDINET, Korea/DART annual reports are included. Those issuers have no US ticker — pass `issuer.company_name` (e.g. "Sivers Semiconductors", "Samsung Electronics", "Ajinomoto") or scope a whole market with `jurisdiction` (["SE"], ["JP"], ["KR"]).
| Argument | Type | Description |
|---|---|---|
| cik | array | Exact SEC CIK values to scope retrieval. Values are normalized to 10 digits. |
| limit | number | |
| query | string | Natural language search query. OMIT IT for fetch mode: with no query nothing is embedded or scored and the matching sections come back in filing-date-desc then document order. Fetch mode requires an identifier (issuer.ticker / issuer.cik / issuer.company_name / cik[] / accession_number) — a query-less call without one is rejected. |
| scope | string | issuer (default): results limited to the resolved company. cross_company: search all filers — for questions like "who names NVIDIA as a supplier". Cross-company results are slower, relevance-ranked only, and always carry `quality_caveat`. |
| domain | string | public_equity = single-company filing search; supply_chain = cross-company supplier/customer relationship evidence; auto (default) = detect from the query. |
| fields | array | |
| issuer | object | The company the question is about. Pass at least one of ticker (e.g. "NVDA"), cik (e.g. "1045810"), or company_name (required for non-US issuers, which have no US ticker). Scopes retrieval to that filer: fast and precise. Strongly recommended on every call, and REQUIRED in fetch mode. |
| offset | integer | Fetch mode only: paging cursor. Omit (or 0) for the first page, then pass the previous response's `next_offset` until it is absent. Opaque: it counts chunk rows, not results. |
| profile | string | Retrieval profile. `hybrid` (default) ranks by the engine's own fused score (saturated lexical + vector cosine), highest first. `bm25` is the lexical-only fallback. `hybrid_rerank` and `hybrid_rerank_tickerprior` are accepted as aliases of `hybrid` for one release — the cross-encoder they named was removed on 2026-09-11. |
{
"type": "object",
"required": [],
"properties": {
"cik": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{1,10}$"
},
"description": "Exact SEC CIK values to scope retrieval. Values are normalized to 10 digits."
},
"limit": {
"type": "number",
"default": 10,
"maximum": 50
},
"query": {
"type": "string",
"description": "Natural language search query. OMIT IT for fetch mode: with no query nothing is embedded or scored and the matching sections come back in filing-date-desc then document order. Fetch mode requires an identifier (issuer.ticker / issuer.cik / issuer.company_name / cik[] / accession_number) — a query-less call without one is rejected."
},
"scope": {
"enum": [
"issuer",
"cross_company"
],
"type": "string",
"default": "issuer",
"description": "issuer (default): results limited to the resolved company. cross_company: search all filers — for questions like \"who names NVIDIA as a supplier\". Cross-company results are slower, relevance-ranked only, and always carry `quality_caveat`."
},
"domain": {
"enum": [
"public_equity",
"supply_chain",
"auto"
],
"type": "string",
"default": "auto",
"description": "public_equity = single-company filing search; supply_chain = cross-company supplier/customer relationship evidence; auto (default) = detect from the query."
},
"fields": {
"type": "array",
"items": {
"type": "string"
}
},
"issuer": {
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^(CIK\\s*)?\\d{1,10}$",
"description": "SEC CIK, any padding."
},
"ticker": {
"type": "string",
"description": "US ticker symbol."
},
"company_name": {
"type": "string",
"description": "Legal or common company name; the route for non-US issuers."
}
},
"description": "The company the question is about. Pass at least one of ticker (e.g. \"NVDA\"), cik (e.g. \"1045810\"), or company_name (required for non-US issuers, which have no US ticker). Scopes retrieval to that filer: fast and precise. Strongly recommended on every call, and REQUIRED in fetch mode."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Fetch mode only: paging cursor. Omit (or 0) for the first page, then pass the previous response's `next_offset` until it is absent. Opaque: it counts chunk rows, not results."
},
"profile": {
"enum": [
"bm25",
"hybrid",
"hybrid_rerank",
"hybrid_rerank_tickerprior"
],
"type": "string",
"default": "hybrid",
"description": "Retrieval profile. `hybrid` (default) ranks by the engine's own fused score (saturated lexical + vector cosine), highest first. `bm25` is the lexical-only fallback. `hybrid_rerank` and `hybrid_rerank_tickerprior` are accepted as aliases of `hybrid` for one release — the cross-encoder they named was removed on 2026-09-11."
},
"section": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20
}
],
"description": "Filing section(s), matched case-insensitively as a substring of the stored label — \"Item 1A\" matches \"Item 1A. Risk Factors\". In fetch mode this is how you ask for one part of a filing."
},
"form_type": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only return these filing forms, for example [\"20-F\"] or [\"6-K\"]."
},
"fiscal_year": {
"oneOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1990
},
{
"type": "array",
"items": {
"type": "integer",
"maximum": 2100,
"minimum": 1990
},
"maxItems": 10,
"minItems": 1
}
],
"description": "Issuer's fiscal year as the company labels it (NVIDIA FY2027 = year ending Jan 2027). Resolved from XBRL DEI fiscal-year focus where available, else from the issuer's fiscal year-end; an empty year widens ±1 with a caveat."
},
"jurisdiction": {
"type": "array",
"items": {
"type": "string"
},
"description": "Scope to non-US issuer jurisdictions (ISO-3166 alpha-2): \"SE\" (Sweden/Bolagsverket), \"JP\" (Japan/EDINET), \"KR\" (Korea/DART). These carry no US ticker and are otherwise buried by SEC-centric ranking. US filings have an empty jurisdiction tag, so this filter is for non-US scoping only — omit it to include US (the default). A named non-US issuer surfaces even without this filter, via the company-name anchor."
},
"prefer_recent": {
"type": "boolean",
"description": "Prefer newer filings when relevance scores are close. Automatically enabled for latest/current/guidance queries."
},
"return_format": {
"enum": [
"section",
"chunk",
"both"
],
"type": "string",
"default": "section",
"description": "Response shape. 'section' (default) returns the full SEC section the matching chunk belongs to. 'chunk' returns the matching window only. 'both' returns both."
},
"accession_number": {
"type": "string",
"pattern": "^\\d{10}-\\d{2}-\\d{6}$",
"description": "Exact SEC accession number. When set, retrieval is hard-scoped to that filing."
},
"exclude_form_type": {
"type": "array",
"items": {
"type": "string"
},
"description": "Exclude filing forms. Company searches already suppress fund/proxy forms by default."
}
}
}What a fund owns: an institutional manager's reported equity book from SEC Form 13F — top positions by value, with quarter-over-quarter share changes and new/increased/decreased flags. Answers 'what does Bridgewater hold', 'what did this fund buy last quarter', 'show me their largest positions'. Look up by manager name (partial match; the largest matching filer wins, since names like 'Vanguard' map to several distinct CIKs) or by exact CIK. Also returns the filer's published contact details — signatory, title, phone, and business address from the filing's cover page and signature block, each citable to the accession number. EDGAR publishes no email address for 13F filers, so none is returned and none should be inferred. Coverage: quarter ends from 2024-12-31 through 2026-06-30; the newest quarter is still filling in as filers submit, and a manager who has not filed it yet falls back to their most recent quarter, named in coverage_caveat. 13F covers US-listed long equity and options only — no shorts, cash, bonds or non-US listings — and is filed 45 days after quarter end, so it is a lagged snapshot, not a live portfolio.
| Argument | Type | Description |
|---|---|---|
| cik | string | Exact 10-digit filer CIK, e.g. 0002012383. Preferred when known. |
| limit | number | Positions to return, 1-200 (default 25), ranked by value. |
| issuer | object | The company the question is about, in the same shape financial_search and search take — so an agent can carry ONE issuer object across tools. Alias only: `issuer.cik` fills in `cik` and `issuer.company_name` fills in `manager` when you have not set them. NOTE this tool identifies the FILING MANAGER, not the issuer held — for who owns a stock, use holdings_by_security. Ownership is a structured lookup, so there is no scope or quality_caveat here — `coverage_caveat` is this tool's equivalent. |
Who owns a stock: institutional holders of a security from SEC Form 13F, ranked by position value, with quarter-over-quarter share changes. Answers 'who are the largest holders of NVDA', 'which funds added or trimmed this quarter', 'did anyone initiate a new position'. Give a ticker (resolved via CUSIP) or a CUSIP directly. Each holder row carries its accession number and an EDGAR source_url so the figure is verifiable against the primary filing. Coverage: quarter ends from 2024-12-31 through 2026-06-30, all ~10,000 filing managers, not just large ones; the newest quarter is still filling in as filers submit, so its holder_count is lower than a settled quarter's. Positions are aggregated per filer CIK — a single 13F contains one line per sub-manager (BlackRock's carries 42 separate NVDA lines), so per-line reading understates holders badly. One book per filer: the original 13F-HR, or the 13F-HR/A RESTATEMENT that replaced it (add-on amendments are excluded); values are USD even where the filer reported in thousands. Note total_value_usd is the sum across filers and may double-count where combination reports include other managers' holdings; coverage_caveat flags this when relevant. 13F covers US-listed long equity and options only — it does not show shorts, cash, bonds, or non-US listings, and is filed 45 days after quarter end.
| Argument | Type | Description |
|---|---|---|
| cusip | string | 9-character CUSIP, e.g. 67066G104. Use when the ticker is unmapped. |
| limit | number | Holders to return, 1-100 (default 20), ranked by value. |
| issuer | object | The company the question is about, in the same shape financial_search and search take — so an agent can carry ONE issuer object across tools. Alias only: `issuer.ticker` fills in `ticker` when you have not set it. Ownership is a structured lookup, so there is no scope or quality_caveat here — `coverage_caveat` is this tool's equivalent. |
List active marketplace partners (sellers) and what each offers. Each partner has zero or more 'modes': `indexed` (free queries via partner_search against published documents) and/or `proxy` (queries routed server-to-server to the seller's own API via partner_proxy_search, consuming prepaid Aether credits per call). Use the returned per-call credit costs to budget calls before invoking partner_proxy_search.
| Argument | Type | Description |
|---|---|---|
| mode | string | Restrict to partners offering this mode. |
| limit | integer | |
| ticker | string | Optional — filter to partners that cover this ticker (either in indexed docs or proxy endpoints). |
{
"type": "object",
"properties": {
"mode": {
"enum": [
"indexed",
"proxy",
"any"
],
"type": "string",
"default": "any",
"description": "Restrict to partners offering this mode."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1
},
"ticker": {
"type": "string",
"description": "Optional — filter to partners that cover this ticker (either in indexed docs or proxy endpoints)."
}
},
"additionalProperties": false
}Route the agent's query server-to-server to one or more seller-registered API endpoints. Each call consumes prepaid Aether credits from the connected account at the per-call rate listed in list_partners (consumed regardless of result count). Aether holds seller credentials — agent never sees URL or token. Pass `issuer` when the question is about one company, so routing narrows to the endpoints that declare coverage of it rather than guessing the ticker from the query text — a wrong guess here spends credits on the wrong endpoint. Use list_partners first to discover available endpoints and per-call credit costs.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | |
| issuer | object | The company the question is about. Pass `ticker` to route only to endpoints that declare coverage of it, instead of relying on ticker detection over the query text. |
| partners* | array | Seller slugs to route to. Empty/omitted = no fan-out (you MUST pick partners explicitly for credits to be consumed — no surprise charges). |
| endpoints | array | Optional: scope to specific endpoint slugs (format `<seller>/<endpoint>`). Otherwise all active endpoints of the named partners. |
| ticker_filter | boolean |
Search marketplace partner documents (research notes, supply-chain analyses, etc. published by registered sellers). Returns ranked chunks with explicit per-document attribution and license terms. Pass `issuer` when the question is about one company — partner documents declare ticker coverage, so a named issuer narrows to the documents that actually cover it; without one the call runs scope=cross_company over every seller's corpus and the response sets `quality_caveat`. Use list_partners first to discover available sellers + filter via the `partners` arg to scope costs.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | Natural-language search query. |
| scope | string | issuer (default): narrow to documents covering the named issuer. cross_company: search every seller's whole corpus — always carries `quality_caveat`. Setting it drops the ticker filter. |
| issuer | object | The company the question is about. Pass `ticker` to filter to documents that declare coverage of it, instead of relying on ticker detection over the query text. |
| profile | string | |
| partners | array | Optional list of seller slugs to scope the search to. Empty/omitted = all active sellers. |
Search the text of EU financial regulation — a 29-act corpus (~13,000 citable chunks) covering markets & securities (MiFID II, MiFIR, MAR, Prospectus, EMIR, CSDR, Short-Selling, SFTR, Benchmarks), crypto & operational resilience (MiCA, DORA), banking & prudential (CRR, CRD IV, BRRD, SRMR), funds (UCITS, AIFMD), payments & insurance (PSD2, Solvency II, IDD), sustainable finance (SFDR, Taxonomy, CSRD), the 2024 EU AML package (AMLR, AMLAR, AMLD6, Transfer-of-Funds Regulation), plus Credit Rating Agencies and GDPR. Returns ranked, citable units — Article-paragraphs, recitals, annex blocks — each with a human breadcrumb (e.g. 'MiCA 2023/1114 · Art. 4 · para. 1' or 'AMLR 2024/1624 · Art. 12 · para. 3'). Scoped to financial regulation, not all EU law. ALWAYS pass `celex` — it is this corpus's anchor, the equivalent of naming the issuer on a filing search — plus `article` when you know it. An anchored call is scope=issuer: fast and precise. With no `celex` the call runs scope=cross_company across all 29 acts, ranked by relevance only, and the response sets `quality_caveat` — check for that field. Use scope=cross_company deliberately for genuinely corpus-wide questions ("which acts impose a 72-hour incident-reporting deadline"). Narrow further with doc_type, chunk_type or AML topic; set prefer_consolidated to favour EUR-Lex consolidated text over the original OJ text.
| Argument | Type | Description |
|---|---|---|
| celex | string | array | The act(s) to anchor on, by CELEX number — e.g. 32014L0065 (MiFID II), 32023R1114 (MiCA), 32013R0575 (CRR), 32022R2554 (DORA), 32016R0679 (GDPR), 32024R1624 (AMLR). This is the subject of the call: pass it whenever you know which act you mean. Omitting it searches the whole 29-act corpus as scope=cross_company, with a quality_caveat. |
| limit | number | |
| query* |
Unified search across every Aether corpus at once — SEC filings, Japan/EDINET and Korea/DART annual reports, EU financial regulation, and earnings calls/press-release exhibits — auto-routed and merged into one corpus-tagged, citation-complete result set. Use this for MOST questions: you do NOT have to pick the right corpus, and it will not miss same-day earnings (8-K earnings exhibits live in the transcript/press corpus, which a filings-only search silently misses). Each hit carries a `corpus` tag, an accession/citation string, a source URL, a 0-1 confidence score and an anchor_id. ALWAYS pass `issuer` (ticker, cik, or company_name for non-US filers) plus `fiscal_year` when you know it — it is forwarded to every corpus, so one named subject scopes filings and earnings calls together: fast and precise. A call with no issuer runs as scope=cross_company: slower, ranked by relevance only, and the response sets `quality_caveat` — check for that field before trusting the result. Use scope=cross_company deliberately, only for questions genuinely about many issuers ("which filers name NVIDIA as a supplier"). Filters are forwarded, not dropped: form_type / accession_number / section / return_format reach the filing corpora (sec/jp/kr), quarter and fiscal_year reach the earnings-call corpus, and EU regulation takes none of them (it has no issuer, form or quarter) — a filing filter therefore narrows an omitted `corpora` to sec/jp/kr. Any field not listed here is REJECTED with a 400 naming it, rather than silently ignored. Reach for financial_search / transcript_search / regulation_search only when you deliberately want to force a single corpus. With an `issuer` and no `corpora`, EU regulation is not searched; if the issuer yields no SEC or earnings hit the response is empty with `coverage: "none"` and a `quality_caveat`, never filled from other corpora. `partial: true` means a corpus arm failed: retry before concluding absence. Returned windows overlap; counts of a term over returned text are not document counts. To page through a long document past `limit`, use financial_search / transcript_search fetch mode with `offset`. Ownership questions do not go through search at all: holdings_by_security and holdings_by_manager.
| Argument | Type | Description |
|---|
List documents this seller has published. Returns status (pending / indexed / failed / revoked) and the indexed chunk count (`indexed_chunk_count`; the legacy alias `vespa_chunk_count` carries the same value for one release).
| Argument | Type | Description |
|---|---|---|
| seller_api_key* | string |
{
"type": "object",
"required": [
"seller_api_key"
],
"properties": {
"seller_api_key": {
"type": "string"
}
},
"additionalProperties": false
}List proxy endpoints this seller has registered. Secrets are never returned — only a `secret_configured` boolean.
| Argument | Type | Description |
|---|---|---|
| seller_api_key* | string |
{
"type": "object",
"required": [
"seller_api_key"
],
"properties": {
"seller_api_key": {
"type": "string"
}
},
"additionalProperties": false
}Publish (or update) a document into the marketplace. The content is chunked + embedded + indexed by a background worker; status moves from `pending` to `indexed` once that completes. Re-publishing the same external_doc_id replaces the prior version. Account must be status='active' for the worker to index; pending_review accounts queue indefinitely.
| Argument | Type | Description |
|---|---|---|
| title | string | |
| content* | string | Document text. Up to ~2 MB. |
| license | string | |
| doc_type | string | |
| metadata | object | |
| source_url | string | |
| seller_api_key* | string | Your seller API key (aether_sk_…). |
| external_doc_id* | string | |
| ticker_coverage | array |
Register a proxy endpoint (Mode B). Aether stores your auth secret encrypted at rest (AES-256-GCM) and routes agent queries server-to-server — agents never see your URL or token. Charge per call via the `price_per_call_usd_cents` field. Account must be status='active' for traffic to be routed.
| Argument | Type | Description |
|---|---|---|
| url* | string | |
| slug* | string | lowercase kebab-case; unique per seller |
| secret | string | Encrypted at rest; never returned. |
| auth_method | string | |
| description | string | |
| http_method | string | |
| display_name* | string | |
| pricing_model | string | |
| taxonomy_tags | array | |
| seller_api_key* | string |
Create a new marketplace seller account. Returns an API key (shown once). New accounts default to status='pending_review' — they can publish documents and register endpoints, but content is not surfaced in search until ops approves the account. Use the `invite_code` arg if the operator gave you one to bypass review.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Lowercase kebab-case identifier shown in attribution. |
| org_name* | string | |
| description | string | Free-text description shown to agents in list_partners. |
| invite_code | string | Optional operator-issued invite. Bypasses per-IP rate limit and auto-approves. |
| contact_email* | string |
{
"type": "object",
"required": [
"slug",
"org_name",
"contact_email"
],
"properties": {
"slug": {
"type": "string",
"description": "Lowercase kebab-case identifier shown in attribution."
},
"org_name": {
"type": "string"
},
"description": {
"type": "string",
"description": "Free-text description shown to agents in list_partners."
},
"invite_code": {
"type": "string",
"description": "Optional operator-issued invite. Bypasses per-IP rate limit and auto-approves."
},
"contact_email": {
"type": "string"
}
},
"additionalProperties": false
}Search earnings-call transcripts and earnings press-release exhibits by speaker turn (CEO/CFO prepared remarks, analyst Q&A, press releases). Returns verbatim quotes as agent-ready payloads: speaker name/role, fiscal year + quarter, call date, source_type (asr_call = our own ASR of the real call vs press_release), sec.gov source URL and citation string. Use for guidance, management tone and forward-looking color that filings don't capture; pair with financial_search to back narrative with filed numbers. ALWAYS pass `issuer` (the ticker whose calls you mean) plus `fiscal_year` when you know it — a named call is scoped to that issuer's calls, fast and precise. A call with no issuer runs as scope=cross_company: slower, ranked by relevance only, and the response sets `quality_caveat` — check for that field. Use scope=cross_company deliberately, only for questions genuinely about many companies ("which management teams talked about tariff pass-through"). Narrow further with speaker_role, lookback_quarters or source_type. FETCH MODE: omit `query` entirely and pass issuer.ticker plus fiscal_year / quarter / date_from / date_to to get that call's segments back in call-date-desc then spoken order, with no ranking and in tens of milliseconds — the right tool when you already know WHICH call you want. For onset/"first mention" questions (when did a topic first come up), bound with date_from/date_to and set order='earliest' — a date pair, not a fiscal year, is the right tool there. Fetch mode pages: pass the response's `next_offset` as `offset` to read past `limit`. Returned windows overlap; counts of a term over returned text are not document counts. `partial: true` means retrieval degraded; an empty result is then not proof of absence. A cross_company call that times out returns a clean 503 telling you to name an issuer.
| Argument | Type | Description |
|---|---|---|
| limit | number | |
| order | string | Sort order. 'earliest'/'latest' sort matched hits chronologically (use 'earliest' for onset/first-mention queries); 'relevance' sorts by rank score. |
| section | any | Filing section(s), matched case-insensitively as a substring of the stored label — "Item 1A" matches "Item 1A. Risk Factors". In fetch mode this is how you ask for one part of a filing. |
| form_type | array | Only return these filing forms, for example ["20-F"] or ["6-K"]. |
| fiscal_year | any | Issuer's fiscal year as the company labels it (NVIDIA FY2027 = year ending Jan 2027). Resolved from XBRL DEI fiscal-year focus where available, else from the issuer's fiscal year-end; an empty year widens ±1 with a caveat. |
| jurisdiction | array | Scope to non-US issuer jurisdictions (ISO-3166 alpha-2): "SE" (Sweden/Bolagsverket), "JP" (Japan/EDINET), "KR" (Korea/DART). These carry no US ticker and are otherwise buried by SEC-centric ranking. US filings have an empty jurisdiction tag, so this filter is for non-US scoping only — omit it to include US (the default). A named non-US issuer surfaces even without this filter, via the company-name anchor. |
| prefer_recent | boolean | Prefer newer filings when relevance scores are close. Automatically enabled for latest/current/guidance queries. |
| return_format | string | Response shape. 'section' (default) returns the full SEC section the matching chunk belongs to. 'chunk' returns the matching window only. 'both' returns both. |
| accession_number | string | Exact SEC accession number. When set, retrieval is hard-scoped to that filing. |
| exclude_form_type | array | Exclude filing forms. Company searches already suppress fund/proxy forms by default. |
| period | string | Quarter end as YYYY-MM-DD. Defaults to the most recent loaded quarter. |
| manager | string | Manager name, partial match, e.g. 'Bridgewater' or 'BlackRock'. Largest matching filer wins. |
{
"type": "object",
"properties": {
"cik": {
"type": "string",
"description": "Exact 10-digit filer CIK, e.g. 0002012383. Preferred when known."
},
"limit": {
"type": "number",
"description": "Positions to return, 1-200 (default 25), ranked by value."
},
"issuer": {
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^(CIK\\s*)?\\d{1,10}$",
"description": "SEC CIK."
},
"ticker": {
"type": "string",
"description": "US ticker symbol."
},
"company_name": {
"type": "string",
"description": "Legal or common company name."
}
},
"description": "The company the question is about, in the same shape financial_search and search take — so an agent can carry ONE issuer object across tools. Alias only: `issuer.cik` fills in `cik` and `issuer.company_name` fills in `manager` when you have not set them. NOTE this tool identifies the FILING MANAGER, not the issuer held — for who owns a stock, use holdings_by_security. Ownership is a structured lookup, so there is no scope or quality_caveat here — `coverage_caveat` is this tool's equivalent."
},
"period": {
"type": "string",
"description": "Quarter end as YYYY-MM-DD. Defaults to the most recent loaded quarter."
},
"manager": {
"type": "string",
"description": "Manager name, partial match, e.g. 'Bridgewater' or 'BlackRock'. Largest matching filer wins."
}
},
"additionalProperties": false
}| period | string | Quarter end as YYYY-MM-DD, e.g. 2026-03-31. Defaults to the most recent loaded quarter. |
| ticker | string | Ticker, e.g. NVDA. Resolved to a CUSIP internally. |
{
"type": "object",
"properties": {
"cusip": {
"type": "string",
"description": "9-character CUSIP, e.g. 67066G104. Use when the ticker is unmapped."
},
"limit": {
"type": "number",
"description": "Holders to return, 1-100 (default 20), ranked by value."
},
"issuer": {
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^(CIK\\s*)?\\d{1,10}$",
"description": "SEC CIK."
},
"ticker": {
"type": "string",
"description": "US ticker symbol."
},
"company_name": {
"type": "string",
"description": "Legal or common company name."
}
},
"description": "The company the question is about, in the same shape financial_search and search take — so an agent can carry ONE issuer object across tools. Alias only: `issuer.ticker` fills in `ticker` when you have not set it. Ownership is a structured lookup, so there is no scope or quality_caveat here — `coverage_caveat` is this tool's equivalent."
},
"period": {
"type": "string",
"description": "Quarter end as YYYY-MM-DD, e.g. 2026-03-31. Defaults to the most recent loaded quarter."
},
"ticker": {
"type": "string",
"description": "Ticker, e.g. NVDA. Resolved to a CUSIP internally."
}
},
"additionalProperties": false
}| Legacy switch, still accepted. When true (default) and an issuer is known — passed in `issuer` or recognized in the query — route only to endpoints covering that ticker. false disables the filter entirely. |
| confirm_charge | boolean | Safety acknowledgement. Must be true to actually execute the call. If false (or omitted), returns a dry-run quote with estimated charges. |
{
"type": "object",
"required": [
"query",
"partners"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string"
},
"issuer": {
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^(CIK\\s*)?\\d{1,10}$",
"description": "SEC CIK. Accepted for symmetry; endpoint coverage is declared by ticker."
},
"ticker": {
"type": "string",
"description": "US ticker symbol."
},
"company_name": {
"type": "string",
"description": "Company name. Accepted for symmetry; endpoint coverage is declared by ticker."
}
},
"description": "The company the question is about. Pass `ticker` to route only to endpoints that declare coverage of it, instead of relying on ticker detection over the query text."
},
"partners": {
"type": "array",
"items": {
"type": "string"
},
"description": "Seller slugs to route to. Empty/omitted = no fan-out (you MUST pick partners explicitly for credits to be consumed — no surprise charges)."
},
"endpoints": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional: scope to specific endpoint slugs (format `<seller>/<endpoint>`). Otherwise all active endpoints of the named partners."
},
"ticker_filter": {
"type": "boolean",
"description": "Legacy switch, still accepted. When true (default) and an issuer is known — passed in `issuer` or recognized in the query — route only to endpoints covering that ticker. false disables the filter entirely."
},
"confirm_charge": {
"type": "boolean",
"default": false,
"description": "Safety acknowledgement. Must be true to actually execute the call. If false (or omitted), returns a dry-run quote with estimated charges."
}
},
"additionalProperties": false
}| doc_types |
| array |
| Optional filter on doc_type field — e.g. ['research_note', 'supply_chain']. |
| ticker_filter | boolean | Legacy switch, still accepted. When true (default) and an issuer is known — passed in `issuer` or recognized in the query — filter to docs covering that ticker. false disables the filter entirely. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"description": "Natural-language search query."
},
"scope": {
"enum": [
"issuer",
"cross_company"
],
"type": "string",
"default": "issuer",
"description": "issuer (default): narrow to documents covering the named issuer. cross_company: search every seller's whole corpus — always carries `quality_caveat`. Setting it drops the ticker filter."
},
"issuer": {
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^(CIK\\s*)?\\d{1,10}$",
"description": "SEC CIK. Accepted for symmetry; partner coverage is declared by ticker."
},
"ticker": {
"type": "string",
"description": "US ticker symbol."
},
"company_name": {
"type": "string",
"description": "Company name. Accepted for symmetry; partner coverage is declared by ticker."
}
},
"description": "The company the question is about. Pass `ticker` to filter to documents that declare coverage of it, instead of relying on ticker detection over the query text."
},
"profile": {
"enum": [
"bm25",
"hybrid"
],
"type": "string",
"default": "hybrid"
},
"partners": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of seller slugs to scope the search to. Empty/omitted = all active sellers."
},
"doc_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional filter on doc_type field — e.g. ['research_note', 'supply_chain']."
},
"ticker_filter": {
"type": "boolean",
"description": "Legacy switch, still accepted. When true (default) and an issuer is known — passed in `issuer` or recognized in the query — filter to docs covering that ticker. false disables the filter entirely."
}
},
"additionalProperties": false
}| string |
| Natural language query |
| scope | string | issuer (default, requires `celex`): results come from that act only. cross_company: the whole corpus — slower, relevance-ranked only, always carries `quality_caveat`. A `celex` filter you pass always applies. |
| article | string | Optional single-article filter, e.g. "20" or "12a" |
| profile | string |
| doc_type | string | Optional filter: regulation | directive | rts | its | decision |
| aml_topics | string | array | Optional topic tag filter: cdd | edd | pep | str_reporting | governance | reporting | transaction_monitoring |
| chunk_type | string | Optional filter: paragraph | article_intro | recital | table | annex |
| prefer_consolidated | boolean | Prefer EUR-Lex consolidated text over original OJ text at equal relevance (hybrid only). Leave off to favor the as-published OJ text. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"celex": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"description": "The act(s) to anchor on, by CELEX number — e.g. 32014L0065 (MiFID II), 32023R1114 (MiCA), 32013R0575 (CRR), 32022R2554 (DORA), 32016R0679 (GDPR), 32024R1624 (AMLR). This is the subject of the call: pass it whenever you know which act you mean. Omitting it searches the whole 29-act corpus as scope=cross_company, with a quality_caveat."
},
"limit": {
"type": "number",
"default": 10,
"maximum": 50
},
"query": {
"type": "string",
"description": "Natural language query"
},
"scope": {
"enum": [
"issuer",
"cross_company"
],
"type": "string",
"default": "issuer",
"description": "issuer (default, requires `celex`): results come from that act only. cross_company: the whole corpus — slower, relevance-ranked only, always carries `quality_caveat`. A `celex` filter you pass always applies."
},
"article": {
"type": "string",
"description": "Optional single-article filter, e.g. \"20\" or \"12a\""
},
"profile": {
"enum": [
"bm25",
"hybrid"
],
"type": "string",
"default": "hybrid"
},
"doc_type": {
"type": "string",
"description": "Optional filter: regulation | directive | rts | its | decision"
},
"aml_topics": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"description": "Optional topic tag filter: cdd | edd | pep | str_reporting | governance | reporting | transaction_monitoring"
},
"chunk_type": {
"type": "string",
"description": "Optional filter: paragraph | article_intro | recital | table | annex"
},
"prefer_consolidated": {
"type": "boolean",
"description": "Prefer EUR-Lex consolidated text over original OJ text at equal relevance (hybrid only). Leave off to favor the as-published OJ text."
}
}
}| limit | integer | Max hits to return (1-50, default 10). |
| query | string | Natural language search query. OPTIONAL — omit it (or pass an empty string) to select FETCH MODE, which ranks nothing and returns rows in filing order. Fetch mode REQUIRES an identifier: pass `issuer` (ticker, cik or company_name) or a single-element `tickers`, optionally narrowed with `fiscal_year`; a query-less call with no identifier is rejected. Fetch fans out to sec/jp/kr/transcripts only — EU regulation has no issuer, so "every article, newest first" answers nothing. |
| scope | string | issuer (default): every corpus is scoped to the named company. cross_company: search all issuers — for questions like "who names NVIDIA as a supplier". Cross-company results are slower, relevance-ranked only, and always carry `quality_caveat`. |
| issuer | object | The company the question is about. Pass at least one of ticker (e.g. "NVDA"), cik (e.g. "1045810"), or company_name (required for non-US issuers, which have no US ticker). Forwarded to every corpus that can use it. Strongly recommended on every call. |
| corpora | array | Optional corpus filter. Omit to search everything (recommended). Values: sec, jp, kr, regulation, transcripts. An explicit value always wins: a filing filter (form_type / accession_number / section) narrows an OMITTED fan-out to sec/jp/kr, but naming corpora here overrides that. |
| quarter | any | Fiscal quarter(s) — "Q2" or ["Q1","Q2"]. Exact, case-insensitive. Applies to the EARNINGS-CALL corpus only (with issuer.ticker and fiscal_year it names one call, the natural fetch-mode request); the filing and regulation corpora ignore it. |
| section | any | Filing section(s), matched case-insensitively as a substring of the stored label — "Item 1A" matches "Item 1A. Risk Factors". In fetch mode this is how you ask for one part of a filing. Filing corpora only; it narrows an omitted `corpora` to sec/jp/kr. |
| tickers | array | Legacy alias of `issuer`, still accepted. One symbol (e.g. ["IBM"]) is read as issuer.ticker; several (e.g. ["IBM", "MU"]) is a cross-company question and is labelled scope=cross_company, though the filter to those companies still applies. Prefer `issuer`. |
| form_type | array | Only return these filing forms, for example ["20-F"] or ["6-K"]. Forwarded to the filing corpora (sec/jp/kr). Because an earnings segment has no form type and an EU article has none either, setting this ALSO narrows an omitted `corpora` to sec/jp/kr rather than merging rows the filter could not reach. |
| fiscal_year | any | Issuer's fiscal year as the company labels it (NVIDIA FY2027 = year ending Jan 2027). Forwarded verbatim to every corpus: on filings it is resolved from XBRL DEI fiscal-year focus where available, else from the issuer's fiscal year-end; on earnings calls it is that corpus's own labelled fiscal year. An empty year widens ±1 with a caveat. |
| return_format | string | Response shape for the filing corpora. "chunk" (the unified default) returns the matching window only — it keeps a five-corpus merge small. "section" returns the full SEC section the chunk belongs to, "both" returns both. The earnings-call and regulation corpora ignore it; their unit is a speaker turn / an article. |
| accession_number | string | Exact SEC accession number. When set, the filing corpora are hard-scoped to that filing, and an omitted `corpora` narrows to sec/jp/kr. It also counts as the identifier fetch mode requires, so `{accession_number}` with no `query` is a legal fetch. |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"description": "Max hits to return (1-50, default 10)."
},
"query": {
"type": "string",
"description": "Natural language search query. OPTIONAL — omit it (or pass an empty string) to select FETCH MODE, which ranks nothing and returns rows in filing order. Fetch mode REQUIRES an identifier: pass `issuer` (ticker, cik or company_name) or a single-element `tickers`, optionally narrowed with `fiscal_year`; a query-less call with no identifier is rejected. Fetch fans out to sec/jp/kr/transcripts only — EU regulation has no issuer, so \"every article, newest first\" answers nothing."
},
"scope": {
"enum": [
"issuer",
"cross_company"
],
"type": "string",
"default": "issuer",
"description": "issuer (default): every corpus is scoped to the named company. cross_company: search all issuers — for questions like \"who names NVIDIA as a supplier\". Cross-company results are slower, relevance-ranked only, and always carry `quality_caveat`."
},
"issuer": {
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^(CIK\\s*)?\\d{1,10}$",
"description": "SEC CIK, any padding."
},
"ticker": {
"type": "string",
"description": "US ticker symbol."
},
"company_name": {
"type": "string",
"description": "Legal or common company name; the route for non-US issuers."
}
},
"description": "The company the question is about. Pass at least one of ticker (e.g. \"NVDA\"), cik (e.g. \"1045810\"), or company_name (required for non-US issuers, which have no US ticker). Forwarded to every corpus that can use it. Strongly recommended on every call."
},
"corpora": {
"type": "array",
"items": {
"enum": [
"sec",
"jp",
"kr",
"regulation",
"transcripts"
],
"type": "string"
},
"description": "Optional corpus filter. Omit to search everything (recommended). Values: sec, jp, kr, regulation, transcripts. An explicit value always wins: a filing filter (form_type / accession_number / section) narrows an OMITTED fan-out to sec/jp/kr, but naming corpora here overrides that."
},
"quarter": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8
}
],
"description": "Fiscal quarter(s) — \"Q2\" or [\"Q1\",\"Q2\"]. Exact, case-insensitive. Applies to the EARNINGS-CALL corpus only (with issuer.ticker and fiscal_year it names one call, the natural fetch-mode request); the filing and regulation corpora ignore it."
},
"section": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20
}
],
"description": "Filing section(s), matched case-insensitively as a substring of the stored label — \"Item 1A\" matches \"Item 1A. Risk Factors\". In fetch mode this is how you ask for one part of a filing. Filing corpora only; it narrows an omitted `corpora` to sec/jp/kr."
},
"tickers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Legacy alias of `issuer`, still accepted. One symbol (e.g. [\"IBM\"]) is read as issuer.ticker; several (e.g. [\"IBM\", \"MU\"]) is a cross-company question and is labelled scope=cross_company, though the filter to those companies still applies. Prefer `issuer`."
},
"form_type": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only return these filing forms, for example [\"20-F\"] or [\"6-K\"]. Forwarded to the filing corpora (sec/jp/kr). Because an earnings segment has no form type and an EU article has none either, setting this ALSO narrows an omitted `corpora` to sec/jp/kr rather than merging rows the filter could not reach."
},
"fiscal_year": {
"oneOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1990
},
{
"type": "array",
"items": {
"type": "integer",
"maximum": 2100,
"minimum": 1990
},
"maxItems": 10,
"minItems": 1
}
],
"description": "Issuer's fiscal year as the company labels it (NVIDIA FY2027 = year ending Jan 2027). Forwarded verbatim to every corpus: on filings it is resolved from XBRL DEI fiscal-year focus where available, else from the issuer's fiscal year-end; on earnings calls it is that corpus's own labelled fiscal year. An empty year widens ±1 with a caveat."
},
"return_format": {
"enum": [
"section",
"chunk",
"both"
],
"type": "string",
"default": "chunk",
"description": "Response shape for the filing corpora. \"chunk\" (the unified default) returns the matching window only — it keeps a five-corpus merge small. \"section\" returns the full SEC section the chunk belongs to, \"both\" returns both. The earnings-call and regulation corpora ignore it; their unit is a speaker turn / an article."
},
"accession_number": {
"type": "string",
"pattern": "^\\d{10}-\\d{2}-\\d{6}$",
"description": "Exact SEC accession number. When set, the filing corpora are hard-scoped to that filing, and an omitted `corpora` narrows to sec/jp/kr. It also counts as the identifier fetch mode requires, so `{accession_number}` with no `query` is a legal fetch."
}
}
}{
"type": "object",
"required": [
"seller_api_key",
"external_doc_id",
"content"
],
"properties": {
"title": {
"type": "string"
},
"content": {
"type": "string",
"description": "Document text. Up to ~2 MB."
},
"license": {
"type": "string"
},
"doc_type": {
"type": "string"
},
"metadata": {
"type": "object",
"additionalProperties": true
},
"source_url": {
"type": "string"
},
"seller_api_key": {
"type": "string",
"description": "Your seller API key (aether_sk_…)."
},
"external_doc_id": {
"type": "string"
},
"ticker_coverage": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}| ticker_coverage | array |
| auth_header_name | string | Required when auth_method='header'. |
| request_template | object |
| response_jsonpath | string | e.g. $.results |
| monthly_request_cap | integer |
| price_per_call_usd_cents | integer |
{
"type": "object",
"required": [
"seller_api_key",
"slug",
"display_name",
"url"
],
"properties": {
"url": {
"type": "string"
},
"slug": {
"type": "string",
"description": "lowercase kebab-case; unique per seller"
},
"secret": {
"type": "string",
"description": "Encrypted at rest; never returned."
},
"auth_method": {
"enum": [
"bearer",
"header",
"basic",
"none"
],
"type": "string"
},
"description": {
"type": "string"
},
"http_method": {
"enum": [
"POST",
"GET"
],
"type": "string"
},
"display_name": {
"type": "string"
},
"pricing_model": {
"enum": [
"free",
"per_call",
"subscription"
],
"type": "string"
},
"taxonomy_tags": {
"type": "array",
"items": {
"type": "string"
}
},
"seller_api_key": {
"type": "string"
},
"ticker_coverage": {
"type": "array",
"items": {
"type": "string"
}
},
"auth_header_name": {
"type": "string",
"description": "Required when auth_method='header'."
},
"request_template": {
"type": "object",
"additionalProperties": true
},
"response_jsonpath": {
"type": "string",
"description": "e.g. $.results"
},
"monthly_request_cap": {
"type": "integer",
"minimum": 1
},
"price_per_call_usd_cents": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}| query | string | Natural language query. OMIT IT for fetch mode: with no query nothing is embedded or scored and the matching segments come back newest call first, then in the order they were spoken. Fetch mode requires a ticker. |
| scope | string | issuer (default): results limited to the issuer's own calls. cross_company: search every issuer's calls — slower, relevance-ranked only, and always carries `quality_caveat`. Setting it drops the ticker filter, so a caveated answer is never secretly a scoped one. |
| issuer | object | The company whose calls you mean. Pass `ticker` (e.g. "NVDA"); this corpus is keyed on ticker, so that is the field that scopes it. Strongly recommended on every call. |
| offset | integer | Fetch mode only: paging cursor. Omit (or 0) for the first page, then pass the previous response's `next_offset` until it is absent. |
| ticker | string | Optional ticker filter (e.g. NVDA). Legacy alias of `issuer.ticker`. |
| date_to | string | Point-in-time upper bound on call date, inclusive ISO YYYY-MM-DD |
| profile | string |
| quarter | any | Fiscal quarter(s) — "Q2" or ["Q1","Q2"]. Exact, case-insensitive. With issuer.ticker and fiscal_year this names one call, which is the natural fetch-mode request. |
| date_from | string | Point-in-time lower bound on call date, inclusive ISO YYYY-MM-DD |
| fiscal_year | any | Fiscal year(s) the question concerns — the ISSUER'S OWN fiscal year, as printed on its cover page, matched exactly against each segment's fiscal-year label. Offset-fiscal-year issuers work as stated: NVDA fiscal_year 2027 returns the calls held during calendar 2026, AAPL 2025 the Q1-Q4 FY2025 calls. If the requested year matches nothing the search retries once at ±1 and says so in `quality_caveat`. Independent of date_from/date_to, which bound the CALL DATE and still apply on top. |
| source_type | string | Provenance filter: asr_call = our ASR of the real call (Q&A); furnished_transcript = issuer transcript exhibit; press_release = 8-K press exhibit. |
| speaker_role | string | Optional speaker role filter: CEO / CFO / Analyst / Operator |
| lookback_quarters | number | Keep calls within last N quarters (default: no filter) |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 50
},
"order": {
"enum": [
"relevance",
"earliest",
"latest"
],
"type": "string",
"default": "relevance",
"description": "Sort order. 'earliest'/'latest' sort matched hits chronologically (use 'earliest' for onset/first-mention queries); 'relevance' sorts by rank score."
},
"query": {
"type": "string",
"description": "Natural language query. OMIT IT for fetch mode: with no query nothing is embedded or scored and the matching segments come back newest call first, then in the order they were spoken. Fetch mode requires a ticker."
},
"scope": {
"enum": [
"issuer",
"cross_company"
],
"type": "string",
"default": "issuer",
"description": "issuer (default): results limited to the issuer's own calls. cross_company: search every issuer's calls — slower, relevance-ranked only, and always carries `quality_caveat`. Setting it drops the ticker filter, so a caveated answer is never secretly a scoped one."
},
"issuer": {
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^(CIK\\s*)?\\d{1,10}$",
"description": "SEC CIK. Accepted for symmetry with financial_search; this corpus scopes on ticker."
},
"ticker": {
"type": "string",
"description": "US ticker symbol."
},
"company_name": {
"type": "string",
"description": "Reserved for non-US calls once the ASR corpus carries them."
}
},
"description": "The company whose calls you mean. Pass `ticker` (e.g. \"NVDA\"); this corpus is keyed on ticker, so that is the field that scopes it. Strongly recommended on every call."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Fetch mode only: paging cursor. Omit (or 0) for the first page, then pass the previous response's `next_offset` until it is absent."
},
"ticker": {
"type": "string",
"description": "Optional ticker filter (e.g. NVDA). Legacy alias of `issuer.ticker`."
},
"date_to": {
"type": "string",
"description": "Point-in-time upper bound on call date, inclusive ISO YYYY-MM-DD"
},
"profile": {
"enum": [
"bm25",
"hybrid"
],
"type": "string",
"default": "hybrid"
},
"quarter": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8
}
],
"description": "Fiscal quarter(s) — \"Q2\" or [\"Q1\",\"Q2\"]. Exact, case-insensitive. With issuer.ticker and fiscal_year this names one call, which is the natural fetch-mode request."
},
"date_from": {
"type": "string",
"description": "Point-in-time lower bound on call date, inclusive ISO YYYY-MM-DD"
},
"fiscal_year": {
"oneOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1990
},
{
"type": "array",
"items": {
"type": "integer",
"maximum": 2100,
"minimum": 1990
},
"maxItems": 10,
"minItems": 1
}
],
"description": "Fiscal year(s) the question concerns — the ISSUER'S OWN fiscal year, as printed on its cover page, matched exactly against each segment's fiscal-year label. Offset-fiscal-year issuers work as stated: NVDA fiscal_year 2027 returns the calls held during calendar 2026, AAPL 2025 the Q1-Q4 FY2025 calls. If the requested year matches nothing the search retries once at ±1 and says so in `quality_caveat`. Independent of date_from/date_to, which bound the CALL DATE and still apply on top."
},
"source_type": {
"enum": [
"press_release",
"furnished_transcript",
"asr_call"
],
"type": "string",
"description": "Provenance filter: asr_call = our ASR of the real call (Q&A); furnished_transcript = issuer transcript exhibit; press_release = 8-K press exhibit."
},
"speaker_role": {
"type": "string",
"description": "Optional speaker role filter: CEO / CFO / Analyst / Operator"
},
"lookback_quarters": {
"type": "number",
"description": "Keep calls within last N quarters (default: no filter)"
}
}
}