MCP.Market

Aether Developer MCP server

online · 100% uptime
by EvidInvest·io.github.EvidInvest/aether-developer·v0.3.4

Cited search over SEC filings, earnings transcripts and EU regulation, with fetch mode. 14 tools.

A85/100grade A
What users say
No reviews yet
Be the first
Safety scan
A85/100

full report

Adoption
Growing

0 stars41 downloads/wk

Reviews

Write one

Nobody has reviewed Aether Developer yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Aether Developer tools (14, 2 write)

write = sends, deletes, buys or posts
  • financial_searchFree

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

  • holdings_by_managerFree

    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.

  • holdings_by_securityFree

    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.

  • list_partnersFree

    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.

  • partner_proxy_searchFree

    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.

  • partner_searchFree

    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.

  • regulation_searchFree

    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.

  • searchFree

    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.

  • seller_list_my_documentsFree

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

  • seller_list_my_endpointsFree

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

  • seller_publish_documentwrite actionFree

    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.

  • seller_register_endpointFree

    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.

  • seller_signupwrite actionFree

    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.

  • transcript_searchFree

    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.

Public scan report

scanner v0.1.10 · 2026-10-14 · same rubric, same numbers if you re-run it

1 low
  • Code scan7 source files scanned25/25
  • Live reliabilityremote reachable in 883ms20/20
  • Tool poisoning14 tool descriptions checked13/15
  • Auth qualityAPI key sent as a header8/15
  • Maintenancelast push 33 days ago12/15
  • Maintainer identityregistry namespace matches repository owner7/10

Findings (1)

  • lowUnusually long tool description (over 2,000 characters)poison.long-description
    tool search: …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.…
Overall 85/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Aether Developer compares

Against every graded Web search MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
85/100
higher than 75% of 3,470 Web search servers
Tools
14
the typical Web search server has 5
Tools that change things
14%
typical: 0%. Fewer write tools means less an agent can break
Uptime
100%
of our recent checks; the typical remote Web search server answers 100%
Response time
426 ms
faster than 36% of 2,238 Web search servers
Downloads a week
41
more than 27% of 827 Web search servers with a package

What its tools let an agent do: 12 read · 2 change

Install Aether Developer in Claude Code, Cursor or VS Code

claude mcp add --transport http aether-developer https://aether.evidinvest.com/mcp
Add to Cursor

What the publisher says

From the Aether Developer repository's README, as published. We do not edit it. Read it on GitHub

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)

MCP endpoint: https://api.aether.evidinvest.com/mcp · Auth: OAuth (sign in when your client prompts — free account).

Then ask: "What does Apple's latest 10-K say about supply-chain risk? Quote the passage with the sec.gov link." Name the company in the question — every tool takes an issuer, and naming it is what makes the answer scoped rather than a relevance-ranked sweep of every filer.

Teach your agent the craft (skills)

MCP gives the agent the tools; the skills/ directory teaches it the craft — tool routing, citation discipline, point-in-time transcript retrieval:

cp -r skills/aether-research ~/.claude/skills/   # Claude Code, personal

See skills/README.md for Claude Desktop / other frameworks.

Call the API from code

Four REST endpoints — the same tools MCP exposes (full reference):

POST /v1/tools/search   ← start here (unified)
POST /v1/tools/financial_search    POST /v1/tools/transcript_search    POST /v1/tools/regulation_search

Name the company, then narrow. Pass issuer on every call and the answer is scoped to that filer: fast and precise. Omit it and the call searches every issuer at once — slower, relevance-ranked only, and the response carries a qualitycaveat. scope: "issuer" with no** caveat is the only guarantee you got a filtered answer, so read both fields.

And query is optional: omit it, pass an identifier plus formtype / fiscalyear / section, and you get fetch mode — that filing's sections in filing order, no ranking, mode: "fetch", tens of milliseconds. If you already know which document you want, don't rank it.

TypeScript / Node

pnpm add @evidinvest/aether-sdk
import { AetherClient } from "@evidinvest/aether-sdk";

const aether = new AetherClient({ apiKey: process.env.AETHER_API_KEY });

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Aether Developer: common questions

Is Aether Developer MCP server safe?
Yes, by our scan: it is graded A (85/100). Read the Aether Developer safety report
How do I install Aether Developer?
It runs remotely at aether.evidinvest.com. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Aether Developer need an API key?
Yes. The registry entry asks for Authorization.
Is Aether Developer maintained?
The last commit was 54 days ago (2026-09-11). The latest release is v0.3.4.
Is Aether Developer up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
What can I use instead of Aether Developer?
Servers from other publishers that do the same job: screenpipe MCP server, Ref Tools MCP server and fojin — Buddhist Canon Tools MCP server.
How does Aether Developer compare with other Web search MCP servers?
safety score 85/100 (higher than 75% of 3,470 Web search servers); tools 14 (the typical Web search server has 5); tools that change things 14% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Aether Developer

Same job from other publishers: the closest match first, then the best rated.

  • screenpipe
    Search your local screen recordings, audio transcripts, and computer activity from screenpipe.
    B
  • Ref Tools
    Token-efficient search for coding agents over public and private documentation.
    A
  • fojin — Buddhist Canon Tools
    Buddhist canon tools: search, passages, cross-canon parallels, dictionaries — all URN-cited.
    A
  • Abap Adt Ro
    Read-only MCP server for SAP ABAP ADT over HTTP, RFC or SNC: the readonly, system and search tools
    A
  • Silica Core
    Retrieval over the folder the session opened: files, search, read, code_pack, write_note.
    A