evidinvest avatar

Aether Developer

evidinvest/aether-developer

Wraps the Aether search API so Claude can query SEC filings, earnings call transcripts, and EU financial regulations (MiFID II, MiCA, CRR, GDPR) directly from chat. You get a handful of search tools that handle hybrid retrieval across those corpora. The underlying service is EvidInvest's financial agent search engine. Setup is the usual npx one-liner, then OAuth device flow on first run. The repo also ships TypeScript and Python HTTP clients if you want to call Aether outside an MCP context. Free tier gives you 5,000 calls per hour for three months, which is generous enough to prototype a research workflow or build a filing-analysis agent without hitting a wall.

tools
14
auth
Secret needed
transport
STDIO, HTTP
env var
1
last updated
Sep 11, 2026

Install

From registry metadata
$ npx add-mcp https://aether.evidinvest.com/mcp --name aether-developer --header 'Authorization: Bearer ${API_TOKEN}'

Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http aether-developer https://aether.evidinvest.com/mcp --header 'Authorization: YOUR_AUTHORIZATION'

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 14 tools

Verified live against the running server on Nov 6, 2026.

searchUnified 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 ques...12 params

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

Parameters* required
accession_numberstring
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 `{ac...
corporaarray
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...
fiscal_yearvalue
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,...
form_typearray
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...
issuerobject
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...
limitinteger
Max hits to return (1-50, default 10).default: 10
quartervalue
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); th...
querystring
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 `issu...
return_formatstring
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...one of section · chunk · bothdefault: chunk
scopestring
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-r...one of issuer · cross_companydefault: issuer
sectionvalue
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 corp...
tickersarray
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 th...
financial_searchSearch 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...17 params

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

Parameters* required
accession_numberstring
Exact SEC accession number. When set, retrieval is hard-scoped to that filing.
cikarray
Exact SEC CIK values to scope retrieval. Values are normalized to 10 digits.
domainstring
public_equity = single-company filing search; supply_chain = cross-company supplier/customer relationship evidence; auto (default) = detect from the query.one of public_equity · supply_chain · autodefault: auto
exclude_form_typearray
Exclude filing forms. Company searches already suppress fund/proxy forms by default.
fieldsarray
fiscal_yearvalue
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...
form_typearray
Only return these filing forms, for example ["20-F"] or ["6-K"].
issuerobject
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...
jurisdictionarray
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...
limitnumber
default: 10
offsetinteger
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.
prefer_recentboolean
Prefer newer filings when relevance scores are close. Automatically enabled for latest/current/guidance queries.
profilestring
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_rera...one of bm25 · hybrid · hybrid_rerank · hybrid_rerank_tickerpriordefault: hybrid
querystring
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 a...
return_formatstring
Response shape. 'section' (default) returns the full SEC section the matching chunk belongs to. 'chunk' returns the matching window only. 'both' returns both.one of section · chunk · bothdefault: section
scopestring
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...one of issuer · cross_companydefault: issuer
sectionvalue
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.
transcript_searchSearch 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 A...15 params

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

Parameters* required
date_fromstring
Point-in-time lower bound on call date, inclusive ISO YYYY-MM-DD
date_tostring
Point-in-time upper bound on call date, inclusive ISO YYYY-MM-DD
fiscal_yearvalue
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 state...
issuerobject
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.
limitnumber
default: 10
lookback_quartersnumber
Keep calls within last N quarters (default: no filter)
offsetinteger
Fetch mode only: paging cursor. Omit (or 0) for the first page, then pass the previous response's `next_offset` until it is absent.
orderstring
Sort order. 'earliest'/'latest' sort matched hits chronologically (use 'earliest' for onset/first-mention queries); 'relevance' sorts by rank score.one of relevance · earliest · latestdefault: relevance
profilestring
one of bm25 · hybriddefault: hybrid
quartervalue
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.
querystring
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 req...
scopestring
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 ti...one of issuer · cross_companydefault: issuer
source_typestring
Provenance filter: asr_call = our ASR of the real call (Q&A); furnished_transcript = issuer transcript exhibit; press_release = 8-K press exhibit.one of press_release · furnished_transcript · asr_call
speaker_rolestring
Optional speaker role filter: CEO / CFO / Analyst / Operator
tickerstring
Optional ticker filter (e.g. NVDA). Legacy alias of `issuer.ticker`.
regulation_searchSearch 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,...10 params

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

Parameters* required
aml_topicsstring | array
Optional topic tag filter: cdd | edd | pep | str_reporting | governance | reporting | transaction_monitoring
articlestring
Optional single-article filter, e.g. "20" or "12a"
celexstring | 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:...
chunk_typestring
Optional filter: paragraph | article_intro | recital | table | annex
doc_typestring
Optional filter: regulation | directive | rts | its | decision
limitnumber
default: 10
prefer_consolidatedboolean
Prefer EUR-Lex consolidated text over original OJ text at equal relevance (hybrid only). Leave off to favor the as-published OJ text.
profilestring
one of bm25 · hybriddefault: hybrid
query*string
Natural language query
scopestring
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 alwa...one of issuer · cross_companydefault: issuer
holdings_by_securityWho 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...5 params

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

Parameters* required
cusipstring
9-character CUSIP, e.g. 67066G104. Use when the ticker is unmapped.
issuerobject
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...
limitnumber
Holders to return, 1-100 (default 20), ranked by value.
periodstring
Quarter end as YYYY-MM-DD, e.g. 2026-03-31. Defaults to the most recent loaded quarter.
tickerstring
Ticker, e.g. NVDA. Resolved to a CUSIP internally.
holdings_by_managerWhat 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...5 params

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

Parameters* required
cikstring
Exact 10-digit filer CIK, e.g. 0002012383. Preferred when known.
issuerobject
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.com...
limitnumber
Positions to return, 1-200 (default 25), ranked by value.
managerstring
Manager name, partial match, e.g. 'Bridgewater' or 'BlackRock'. Largest matching filer wins.
periodstring
Quarter end as YYYY-MM-DD. Defaults to the most recent loaded quarter.
list_partnersList 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, con...3 params

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, con...

Parameters* required
limitinteger
default: 50
modestring
Restrict to partners offering this mode.one of indexed · proxy · anydefault: any
tickerstring
Optional — filter to partners that cover this ticker (either in indexed docs or proxy endpoints).
partner_searchSearch 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...8 params

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

Parameters* required
doc_typesarray
Optional filter on doc_type field — e.g. ['research_note', 'supply_chain'].
issuerobject
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.
limitinteger
default: 10
partnersarray
Optional list of seller slugs to scope the search to. Empty/omitted = all active sellers.
profilestring
one of bm25 · hybriddefault: hybrid
query*string
Natural-language search query.
scopestring
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.one of issuer · cross_companydefault: issuer
ticker_filterboolean
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.
partner_proxy_searchRoute 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 — a...7 params

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 — a...

Parameters* required
confirm_chargeboolean
Safety acknowledgement. Must be true to actually execute the call. If false (or omitted), returns a dry-run quote with estimated charges.default: false
endpointsarray
Optional: scope to specific endpoint slugs (format `<seller>/<endpoint>`). Otherwise all active endpoints of the named partners.
issuerobject
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.
limitinteger
default: 10
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).
query*string
ticker_filterboolean
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 e...
seller_signupCreate 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...5 params

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

Parameters* required
contact_email*string
descriptionstring
Free-text description shown to agents in list_partners.
invite_codestring
Optional operator-issued invite. Bypasses per-IP rate limit and auto-approves.
org_name*string
slug*string
Lowercase kebab-case identifier shown in attribution.
seller_publish_documentPublish (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='act...9 params

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='act...

Parameters* required
content*string
Document text. Up to ~2 MB.
doc_typestring
external_doc_id*string
licensestring
metadataobject
seller_api_key*string
Your seller API key (aether_sk_…).
source_urlstring
ticker_coveragearray
titlestring
seller_register_endpointRegister 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 traf...16 params

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

Parameters* required
auth_header_namestring
Required when auth_method='header'.
auth_methodstring
one of bearer · header · basic · none
descriptionstring
display_name*string
http_methodstring
one of POST · GET
monthly_request_capinteger
price_per_call_usd_centsinteger
pricing_modelstring
one of free · per_call · subscription
request_templateobject
response_jsonpathstring
e.g. $.results
secretstring
Encrypted at rest; never returned.
seller_api_key*string
slug*string
lowercase kebab-case; unique per seller
taxonomy_tagsarray
ticker_coveragearray
url*string
seller_list_my_documentsList 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).1 params

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

Parameters* required
seller_api_key*string
seller_list_my_endpointsList proxy endpoints this seller has registered. Secrets are never returned — only a `secret_configured` boolean.1 params

List proxy endpoints this seller has registered. Secrets are never returned — only a `secret_configured` boolean.

Parameters* required
seller_api_key*string

Sponsors

Configuration

AETHER_API_KEY

Optional Aether API key (ak_…). If unset, the package runs OAuth 2.0 device flow on first run. Get keys at https://aether.evidinvest.com/developer/keys.

Readme

aether-developer

Everything you need to connect Aether — the search engine built for agents, over SEC filings, earnings-call transcripts, and EU financial regulation — to your LLM, your IDE, or your own code.

Every result is a ready-to-cite evidence payload: the exact filed passage, an accession-numbered citation, the sec.gov / EUR-Lex link, and a confidence score. No filing, no answer — your agent stops inventing numbers.

aether-developer/
├── docs/                — connection guides + REST API reference
│   ├── chatgpt.md       — ChatGPT Developer Mode setup
│   ├── mcp.md           — Claude / Cursor / Cline / any MCP client
│   ├── cursor.md        — Cursor specifics (one-click install)
│   └── search.md        — REST API reference (/v1/tools/*), the issuer contract, fetch mode
├── skills/              — Agent Skills (drop into ~/.claude/skills)
├── mcp/                 — @evidinvest/aether-mcp (stdio MCP server, npm)
├── clients/
│   ├── typescript/      — @evidinvest/aether-sdk (npm)
│   └── python/          — evidinvest-aether-sdk (PyPI)
└── examples/            — runnable demos + config snippets

Connect your LLM (no code)


View the full README on GitHub

Details

Repository
github.com/evidinvest/aether-developer
Category
Search & Web Crawling
Package
@evidinvest/aether-mcp
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

More from evidinvest

Related Search & Web Crawling MCP servers

View all
1grblasquiz avatarHacé Cuentas — Free Calculatorsgrblasquiz/hacecuentasFree calculators as MCP tools: finance, taxes, health, units, dates. Search, fetch & compute.0stars
23121n avatarStatfin Mcp3121n/nor-data-statfin-mcpStatistics Finland (StatFin/PxWeb): search tables, read metadata, fetch JSON-stat2 data.0stars
3bch1212 avatarAgentfetchbch1212/agentfetch-mcpToken-budgeted web fetch for AI agents — auto-routes Jina, FireCrawl, Trafilatura, PDF.0stars
4fredpsantos33 avatarIteratoolsfredpsantos33/iteratools-mcp40+ pay-per-use tools for AI agents: search, TTS, QR, PDF, scraping, image gen. x402.0stars
5godalo-ai avatarGodalogodalo-ai/godalo-mcpAffiliate product search for AI agents. Merchant feeds, not web scraping. Works with any MCP client.0stars
6levapveeskela avatarLV24 SEOlevapveeskela/lv24-seo-optimizerFree-first SEO for agents: GSC, Yandex Webmaster/Metrika, Bing, CrUX, PSI, crawl.0stars