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).
| Client | How | Guide |
|---|
| ChatGPT | Settings โ Apps & Connectors โ Developer mode โ Create connector with the URL above | docs/chatgpt.md |
| Claude (web/Desktop) | Settings โ Connectors โ Add custom connector with the URL above | docs/mcp.md |
| Claude Code | claude mcp add --transport http aether https://api.aether.evidinvest.com/mcp | docs/mcp.md |
| Cursor |  | docs/cursor.md |
| Cline / Continue / other stdio MCP | npx -y @evidinvest/aether-mcp in the client's MCP config | docs/mcp.md |
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/
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
quality_caveat. 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 form_type /
fiscal_year / 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 });
const out = await aether.financialSearch({
query: "supply-chain concentration risk",
issuer: { ticker: "AAPL" },
fiscal_year: 2025,
limit: 5,
});
if (out.quality_caveat) console.warn(out.scope, out.quality_caveat);
for (const c of out.results) {
const start = c.metadata?.retrieval?.body_offset ?? 0;
console.log(c.citation, c.metadata?.source_url, c.text.slice(start, start + 200));
}
const risks = await aether.financialSearch({
issuer: { ticker: "AAPL" },
form_type: ["10-K"],
section: "Item 1A",
limit: 5,
});
console.log(risks.mode);
Python
pip install evidinvest-aether-sdk
from aether import AetherClient
with AetherClient(api_key="ak_...") as aether:
out = aether.financial_search(
query="supply-chain concentration risk",
issuer={"ticker": "AAPL"},
fiscal_year=2025,
limit=5,
)
if out.quality_caveat:
print(out.scope, out.quality_caveat)
for c in out.results:
start = c.body_offset or 0
print(c.citation, c.metadata.get("source_url"), c.text[start : start + 200])
risks = aether.financial_search(
issuer={"ticker": "AAPL"}, form_type=["10-K"], section="Item 1A", limit=5
)
print(risks.mode)
curl / any language
curl -sS https://api.aether.evidinvest.com/v1/tools/search \
-H "authorization: Bearer $AETHER_API_KEY" \
-H "content-type: application/json" \
-d '{"query":"supply chain risk Taiwan","issuer":{"ticker":"TSM"},"limit":5}' | jq .
Docs
Get an API key
https://aether.evidinvest.com/developer/keys โ anonymous calls work but are
rate-limited; keys are free.
What's in the corpus
- SEC filings โ 10-K / 10-Q / 8-K, registration statements,
prospectuses, press exhibits; ~10 years of S&P 500 and beyond.
- Non-US registries โ Sweden (Bolagsverket), Japan (EDINET),
Korea (DART) annual reports. Reach a non-US filer by name โ
issuer: {company_name: "Sivers Semiconductors"} โ or scope a whole market
with jurisdiction: ["SE"|"JP"|"KR"].
- Earnings calls โ speaker-attributed transcripts + furnished press
exhibits, with point-in-time filters (
order: "earliest" finds first
mentions) and the issuer's own fiscal_year + quarter.
- EU regulation โ MiFID II, MiCA, DORA, the AML package; article-level
citations.
3 months free. Verify your email when you sign up and you're on the trial
tier automatically โ up to 5,000 API calls/hour on Aether's search tools, free
for 3 months. No card required; it reverts to the free tier (100 calls/hour +
paid credits) when the trial ends.
Contribute a client library
The TypeScript and Python clients are intentionally tiny โ one bearer-token
fetch wrapper + typed shapes for the /v1/tools/* endpoints. Porting to Go,
Rust, Java, etc. is ~150 lines. Open a PR under clients/<lang>/. Whatever you
write, surface scope, quality_caveat, mode and each hit's body_offset:
a client that drops them leaves its users unable to tell a precise answer from
an approximate one. Response fixtures to test against live in
clients/fixtures/.
License
Apache-2.0 โ see LICENSE.