Cited search over SEC filings, earnings transcripts and EU regulation, with fetch mode. 14 tools.
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
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.
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.
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.
pnpm add @evidinvest/aether-sdk
import { AetherClient } from "@evidinvest/aether-sdk";
const aether = new AetherClient({ apiKey: process.env.AETHER_API_KEY });
// search: the question in `query`, the company in `issuer`
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; // skip the EDGAR cover page
console.log(c.citation, c.metadata?.source_url, c.text.slice(start, start + 200));
}
// fetch: no query — Apple's latest 10-K risk factors, in filing order
const risks = await aether.financialSearch({
issuer: { ticker: "AAPL" },
form_type: ["10-K"],
section: "Item 1A",
limit: 5,
});
console.log(risks.mode); // "fetch" — and no `confidence` on any hit
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 # skip the EDGAR cover page
print(c.citation, c.metadata.get("source_url"), c.text[start : start + 200])
# fetch: no query — Apple's latest 10-K risk factors, in filing order
risks = aether.financial_search(
issuer={"ticker": "AAPL"}, form_type=["10-K"], section="Item 1A", limit=5
)
print(risks.mode) # "fetch" — and `confidence` is None on every hit
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/search.md — REST API reference: all three tools, params, response shape.docs/regulation_search.md — EU financial-regulation search deep-dive (29 acts), filters, curl.docs/mcp.md — connect any MCP client (remote URL or stdio), env overrides.docs/chatgpt.md — ChatGPT Developer Mode walkthrough.docs/cursor.md — Cursor one-click install.https://aether.evidinvest.com/developer/keys — anonymous calls work but are rate-limited; keys are free.
issuer: {company_name: "Sivers Semiconductors"} — or scope a whole market
with jurisdiction: ["SE"|"JP"|"KR"].order: "earliest" finds first
mentions) and the issuer's own fiscal_year + quarter.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.
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/.
Apache-2.0 — see LICENSE.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @evidinvest/aether-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-evidinvest-aether-developer": {
"command": "npx",
"args": [
"-y",
"@evidinvest/aether-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@evidinvest/aether-mcpnpmio.github.EvidInvest/aether-developer works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.