diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index ea64cfec7..c08859d49 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -118,6 +118,12 @@ "source": "./plugins/partner-built/spglobal", "description": "S&P Global - Financial data and analytics skills including company tearsheets, earnings previews, and transaction summaries" }, + { + "name": "aether", + "displayName": "Aether", + "source": "./plugins/partner-built/aether", + "description": "Agent-native search over SEC filings (10-K/10-Q/8-K), earnings-call transcripts, and a 29-act EU financial-regulation corpus — as-filed and citable, never analyst-adjusted, plus a third-party data marketplace." + }, { "name": "claude-for-msft-365-install", "displayName": "Claude for Microsoft 365 Install", diff --git a/plugins/partner-built/aether/.claude-plugin/plugin.json b/plugins/partner-built/aether/.claude-plugin/plugin.json new file mode 100644 index 000000000..2cf68a0ab --- /dev/null +++ b/plugins/partner-built/aether/.claude-plugin/plugin.json @@ -0,0 +1,25 @@ +{ + "name": "aether", + "displayName": "Aether", + "version": "0.1.1", + "description": "Agent-native search over SEC filings (10-K/10-Q/8-K), earnings-call transcripts, and a 29-act EU financial-regulation corpus — as-filed and citable, never analyst-adjusted. Includes a two-sided data marketplace for third-party research.", + "author": { + "name": "EvidInvest (Aether)", + "email": "hao.huang@ebdsweden.com" + }, + "homepage": "https://aether.evidinvest.com", + "repository": "https://github.com/EvidInvest/aether-developer", + "license": "Apache-2.0", + "keywords": [ + "sec", + "edgar", + "filings", + "10-K", + "earnings-transcripts", + "eu-regulation", + "mifid", + "mica", + "financial-search", + "agent-native" + ] +} diff --git a/plugins/partner-built/aether/.mcp.json b/plugins/partner-built/aether/.mcp.json new file mode 100644 index 000000000..29ed83d82 --- /dev/null +++ b/plugins/partner-built/aether/.mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "aether": { + "type": "http", + "url": "https://api.aether.evidinvest.com/mcp" + } + } +} diff --git a/plugins/partner-built/aether/CONNECTORS.md b/plugins/partner-built/aether/CONNECTORS.md new file mode 100644 index 000000000..ccfedec54 --- /dev/null +++ b/plugins/partner-built/aether/CONNECTORS.md @@ -0,0 +1,95 @@ +# Connectors + +This plugin connects to a single MCP server, **Aether** (`@evidinvest/aether-mcp`), which +proxies to `https://api.aether.evidinvest.com`. No additional connectors are required. The +server advertises **11 tools** in three families. Commands reference tools by their exact +names below. + +## Tool Categories + +| Category | Tools | Description | +|----------|-------|-------------| +| Search | `financial_search`, `transcript_search`, `regulation_search` | First-party retrieval over SEC filings, earnings transcripts, and EU regulation | +| Marketplace — read | `list_partners`, `partner_search`, `partner_proxy_search` | Discover and query third-party seller data | +| Marketplace — sell | `seller_signup`, `seller_publish_document`, `seller_register_endpoint`, `seller_list_my_documents`, `seller_list_my_endpoints` | Publish documents or register paid endpoints as a seller | + +## Search Tools + +### `financial_search` +Natural-language hybrid retrieval over SEC filings (10-K/10-Q/8-K) and supply-chain +relationships. Returns ranked, structured, LLM-ready results with snippets, section titles, +filing URLs, and tickers. + +| Param | Type | Notes | +|-------|------|-------| +| `query` | string | **Required.** Natural-language query. | +| `domain` | enum | `public_equity` \| `supply_chain` \| `auto` (default `auto`). | +| `limit` | number | Default 10, max 50. | +| `fields` | string[] | Optional field projection. | +| `profile` | enum | `bm25` \| `hybrid` \| `hybrid_rerank` \| `hybrid_rerank_tickerprior` (default — the production winner: hybrid + cross-encoder rerank + ticker-prior). | +| `return_format` | enum | `section` (default — full SEC section the match belongs to) \| `chunk` (matching window only) \| `both`. | + +### `transcript_search` +Hybrid retrieval over earnings-call transcripts (CEO/CFO commentary + analyst Q&A). Returns +ranked verbatim speaker turns with citations. Use for forward-looking color (guidance, +narrative) that filings don't capture. + +| Param | Type | Notes | +|-------|------|-------| +| `query` | string | **Required.** | +| `ticker` | string | Optional ticker filter (e.g. `NVDA`). | +| `lookback_quarters` | number | Keep calls within the last N quarters (default: no filter). | +| `speaker_role` | string | Optional: `CEO` \| `CFO` \| `Analyst` \| `Operator`. | +| `limit` | number | Default 10, max 50. | +| `profile` | enum | `bm25` \| `hybrid` (default). | + +### `regulation_search` +Search a 29-act EU financial-regulation corpus (~13,000 citable chunks). Returns ranked, +citable units — Article-paragraphs, recitals, annex blocks — each with a human breadcrumb +(e.g. `MiCA 2023/1114 · Art. 4 · para. 1`). Scoped to financial regulation, not all EU law. + +| Param | Type | Notes | +|-------|------|-------| +| `query` | string | **Required.** | +| `celex` | string \| string[] | Optional CELEX filter, e.g. `32014L0065` (MiFID II), `32023R1114` (MiCA), `32013R0575` (CRR), `32022R2554` (DORA), `32024R1624` (AMLR). Omit to search the whole corpus. | +| `doc_type` | string | `regulation` \| `directive` \| `rts` \| `its` \| `decision`. | +| `article` | string | Single-article filter, e.g. `"20"` or `"12a"`. | +| `chunk_type` | string | `paragraph` \| `article_intro` \| `recital` \| `table` \| `annex`. | +| `aml_topics` | string \| string[] | `cdd` \| `edd` \| `pep` \| `str_reporting` \| `governance` \| `reporting` \| `transaction_monitoring`. | +| `prefer_consolidated` | boolean | Prefer EUR-Lex consolidated text over original OJ text at equal relevance (hybrid only). | +| `limit` | number | Default 10, max 50. | +| `profile` | enum | `bm25` \| `hybrid` (default). | + +## Marketplace — Read Tools + +### `list_partners` +List active marketplace sellers and what each offers. Each partner exposes zero or more modes: +`indexed` (free queries via `partner_search`) and/or `proxy` (paid per-call queries via +`partner_proxy_search`). Returns pricing so you can budget before calling. Params: `ticker` +(optional coverage filter), `mode` (`indexed` \| `proxy` \| `any`), `limit`. + +### `partner_search` +Search marketplace partner documents (research notes, supply-chain analyses) published by +registered sellers. Returns ranked chunks with per-document attribution and license terms. +Call `list_partners` first to scope via `partners`. Params: `query` (**required**), `partners[]`, +`doc_types[]`, `ticker_filter`, `limit`, `profile`. + +### `partner_proxy_search` +Route a query server-to-server to seller-registered API endpoints. **Costs accrue per call** +regardless of result count; Aether holds seller credentials so the agent never sees the URL or +token. Params: `query` (**required**), `partners[]` (**required** — you must pick explicitly, +no surprise billing), `endpoints[]`, `ticker_filter`, `limit`, `confirm_charge` (must be `true` +to execute; otherwise returns a dry-run quote). + +## Marketplace — Sell Tools + +For data publishers, not analysis workflows. Briefly: + +- **`seller_signup`** — create a seller account (returns an API key once; new accounts are + `pending_review` until ops approves, unless an `invite_code` is supplied). +- **`seller_publish_document`** — publish/update a document (chunked, embedded, indexed in the + background); re-publishing the same `external_doc_id` replaces the prior version. +- **`seller_register_endpoint`** — register a proxy endpoint (Mode B); secret stored encrypted + at rest, per-call pricing via `price_per_call_usd_cents`. +- **`seller_list_my_documents`** / **`seller_list_my_endpoints`** — inventory + status; secrets + never returned. diff --git a/plugins/partner-built/aether/README.md b/plugins/partner-built/aether/README.md new file mode 100644 index 000000000..102a3aec2 --- /dev/null +++ b/plugins/partner-built/aether/README.md @@ -0,0 +1,82 @@ +# Aether — Agent-Native Financial Search + +Search SEC filings, earnings-call transcripts, and EU financial regulation in natural +language, and get back **as-filed, citable** text — never analyst-adjusted. Aether is a +financial-vertical search engine purpose-built for agents, exposed over MCP. + +## What This Plugin Does + +This plugin wires the [Aether MCP server](https://github.com/EvidInvest/aether-developer) +into Claude and packages its tools into high-level workflows. Each command orchestrates a +search tool into a complete, citation-backed answer instead of leaving you to call tools one +at a time. + +The corpus today: + +- **SEC filings** — 10-K / 10-Q / 8-K for the S&P 500 across ~10 years, ~1.4M retrieval chunks. +- **Earnings-call transcripts** — CEO / CFO commentary and analyst Q&A, for forward-looking + color that filings don't capture. +- **EU financial regulation** — a 29-act corpus (~13,000 citable units) spanning MiFID II, + MiFIR, MAR, EMIR, MiCA, DORA, CRR/CRD IV, UCITS/AIFMD, PSD2, Solvency II, SFDR/Taxonomy/CSRD, + the 2024 AML package, and more. +- **Marketplace** — third-party research and data published by registered sellers, searchable + alongside the first-party corpus. + +## Commands + +| Command | Description | +|---------|-------------| +| `/sec-deep-dive` | Pull the most relevant 10-K/10-Q/8-K sections on a topic for a company, with as-filed quotes and filing citations | +| `/earnings-color` | Surface CEO/CFO/analyst commentary on a topic from earnings-call transcripts, quoted verbatim with speaker + date | +| `/regulation-lookup` | Find the controlling EU-regulation text for a question, returned as citable Article-paragraphs / recitals | +| `/supply-chain-exposure` | Find public companies disclosing exposure to a supply-chain risk, grouped by ticker | + +## Skills + +| Skill | Domain Knowledge | +|-------|-----------------| +| `sec-filings-research` | Retrieval profiles, `section` vs `chunk` returns, as-filed discipline, citation hygiene | +| `earnings-transcript-research` | Speaker-role and lookback filtering, separating guidance from reported results | +| `eu-regulation-research` | CELEX map, consolidated vs OJ text, doc-type/article/AML-topic filters, citation breadcrumbs | + +## Integrations + +This plugin connects to the **Aether MCP Server**, which serves these tool families: + +- **Search** — `financial_search` (SEC filings + supply-chain relationships), + `transcript_search` (earnings calls), `regulation_search` (EU financial regulation). +- **Marketplace (read)** — `list_partners`, `partner_search` (indexed seller documents), + `partner_proxy_search` (paid server-to-server seller queries). +- **Marketplace (sell)** — `seller_signup`, `seller_publish_document`, + `seller_register_endpoint`, `seller_list_my_documents`, `seller_list_my_endpoints`. + +See [CONNECTORS.md](CONNECTORS.md) for the complete tool reference and parameters. + +## Installation + +``` +claude plugins add aether +``` + +## Requirements & Authentication + +This is a **remote MCP server** over Streamable HTTP at +`https://api.aether.evidinvest.com/mcp` (see [`.mcp.json`](.mcp.json)) — works in both +Claude Cowork and Claude Code, nothing to install. Authentication: + +- **OAuth device code** — on first connect the client walks you through sign-in at + ; the token is cached and refreshed automatically. + Verified accounts include a **3-month free trial** (5,000 calls/hr on Aether's first-party tools). +- **Anonymous** — connect without signing in to try it out, rate-limited to 5 calls/hour. + +A self-hosted / stdio option (`npx @evidinvest/aether-mcp` with `AETHER_API_KEY`) is also +available — see the [aether-developer repo](https://github.com/EvidInvest/aether-developer). + +## Why Aether + +- **As-filed, never adjusted.** Numbers and language come straight from the source filing, with + the section, filing URL, and ticker attached — not a vendor's normalized model. +- **First agent-native financial search.** Built for tool-calling agents, not a human UI bolted + onto an API. +- **One server, three corpora.** US disclosure, earnings narrative, and EU regulation behind a + single MCP connector, plus an open marketplace for third-party data. diff --git a/plugins/partner-built/aether/commands/earnings-color.md b/plugins/partner-built/aether/commands/earnings-color.md new file mode 100644 index 000000000..c83f1a75b --- /dev/null +++ b/plugins/partner-built/aether/commands/earnings-color.md @@ -0,0 +1,42 @@ +--- +description: Surface CEO/CFO/analyst commentary on a topic from earnings-call transcripts, quoted verbatim with speaker and date +argument-hint: " [ticker e.g. NVDA] [lookback quarters e.g. 4]" +--- + +# Earnings Color + +> Uses the Aether `transcript_search` tool. See [CONNECTORS.md](../CONNECTORS.md) for parameters. + +Pull forward-looking commentary — guidance, narrative, tone — from earnings-call transcripts +that 10-K/10-Q filings don't capture. See the **earnings-transcript-research** skill for guidance +on separating reported results from outlook. + +## Workflow + +### 1. Gather Input +- Topic / question (required). +- Optional: ticker, lookback window (quarters), speaker role of interest (CEO / CFO / Analyst). + +### 2. Search +Call `transcript_search` with: +- `query`: the topic phrased naturally. +- `ticker`: if the user named a company. +- `lookback_quarters`: if the user wants recent calls only (e.g. 4). +- `speaker_role`: if they want only management (`CEO`/`CFO`) or only `Analyst` questions. +- `limit`: 10. + +### 3. Synthesize +- Quote speaker turns **verbatim**. +- Attribute each: ticker, speaker name + role, and call date. +- Distinguish management assertions from analyst questions; flag hedged or conditional language. + +## Output Format + +Lead with a 1-2 sentence read on management's stance, then: + +| Quote | Speaker (role) | Ticker | Call date | +|-------|----------------|--------|-----------| +| "…" | … (CEO) | … | … | + +Close by noting where commentary is consistent vs shifting across quarters, and any topics +management notably avoided. diff --git a/plugins/partner-built/aether/commands/regulation-lookup.md b/plugins/partner-built/aether/commands/regulation-lookup.md new file mode 100644 index 000000000..d45000172 --- /dev/null +++ b/plugins/partner-built/aether/commands/regulation-lookup.md @@ -0,0 +1,44 @@ +--- +description: Find the controlling EU-regulation text for a question, returned as citable Article-paragraphs and recitals +argument-hint: " [act e.g. MiCA / MiFID II] [article e.g. 20]" +--- + +# Regulation Lookup + +> Uses the Aether `regulation_search` tool. See [CONNECTORS.md](../CONNECTORS.md) for parameters. + +Find the controlling text in the EU financial-regulation corpus and return it as **citable** +units with breadcrumbs (e.g. `MiCA 2023/1114 · Art. 4 · para. 1`). See the +**eu-regulation-research** skill for the CELEX map and consolidated-vs-OJ guidance. + +## Workflow + +### 1. Gather Input +- Question (required). +- Optional: which act (map to CELEX), specific article, doc type, AML topic. + +### 2. Search +Call `regulation_search` with: +- `query`: the question phrased naturally. +- `celex`: if the user named an act — e.g. `32023R1114` (MiCA), `32014L0065` (MiFID II), + `32013R0575` (CRR), `32022R2554` (DORA), `32024R1624` (AMLR). See the skill for the full map. +- `article`: if they cited a specific article. +- `aml_topics`: for AML questions (e.g. `cdd`, `edd`, `pep`, `str_reporting`). +- `prefer_consolidated`: `true` when the user wants current in-force text rather than as-published. +- `limit`: 10. + +### 3. Synthesize +- Quote the operative provision **verbatim**. +- Always include the breadcrumb citation returned with each unit. +- If consolidated and original text differ materially, note both. + +## Output Format + +Lead with a 1-2 sentence answer grounded in the provision, then: + +| Provision (verbatim) | Citation | Type | +|----------------------|----------|------| +| "…" | MiCA 2023/1114 · Art. 4 · para. 1 | paragraph | + +Close with a plain-language reading. Flag that this is the corpus text, not legal advice, and +note if the question spans acts not in the 29-act corpus. diff --git a/plugins/partner-built/aether/commands/sec-deep-dive.md b/plugins/partner-built/aether/commands/sec-deep-dive.md new file mode 100644 index 000000000..7efecd76c --- /dev/null +++ b/plugins/partner-built/aether/commands/sec-deep-dive.md @@ -0,0 +1,45 @@ +--- +description: Pull the most relevant 10-K/10-Q/8-K sections on a topic for a company, with as-filed quotes and filing citations +argument-hint: " " +--- + +# SEC Deep Dive + +> Uses the Aether `financial_search` tool. See [CONNECTORS.md](../CONNECTORS.md) for parameters. + +Search a company's SEC filings for a topic and return the most relevant **as-filed** sections, +quoted verbatim with citations. See the **sec-filings-research** skill for retrieval-profile and +return-format guidance. + +## Workflow + +### 1. Gather Input +- Ticker (required). +- Topic / question (required). +- Optional: filing-type focus (10-K vs 10-Q vs 8-K), recency preference. + +### 2. Search +Call `financial_search` with: +- `query`: the topic phrased naturally, scoped to the company (e.g. "Apple supply-chain concentration risk in Taiwan"). +- `domain`: `public_equity`. +- `return_format`: `section` (full section context for accurate quoting). +- `profile`: leave default (`hybrid_rerank_tickerprior`). +- `limit`: 10. + +If results look thin, widen the query or retry with `return_format: "both"`. + +### 3. Synthesize +- Quote the relevant passages **verbatim** — never paraphrase numbers or risk language. +- Attribute every quote: ticker, filing type, section title, and filing URL from the result. +- Group by theme; note disagreements or changes in language across filings if visible. + +## Output Format + +Lead with a 1-2 sentence answer to the question, then: + +| Quote (as-filed) | Filing | Section | Date / URL | +|------------------|--------|---------|------------| +| "…" | 10-K | Risk Factors | … | + +Close with a short synthesis: what the filings actually say, and any gaps where the disclosure +is silent. Do not infer beyond the cited text. diff --git a/plugins/partner-built/aether/commands/supply-chain-exposure.md b/plugins/partner-built/aether/commands/supply-chain-exposure.md new file mode 100644 index 000000000..31fdd7262 --- /dev/null +++ b/plugins/partner-built/aether/commands/supply-chain-exposure.md @@ -0,0 +1,38 @@ +--- +description: Find public companies disclosing exposure to a supply-chain risk, grouped by ticker +argument-hint: "" +--- + +# Supply-Chain Exposure + +> Uses the Aether `financial_search` tool in supply-chain mode. See [CONNECTORS.md](../CONNECTORS.md). + +Find public companies whose SEC filings disclose exposure to a given supply-chain risk, then +rank and group the evidence by ticker. See the **sec-filings-research** skill for retrieval +guidance. + +## Workflow + +### 1. Gather Input +- The risk or dependency (required) — e.g. a region, supplier, input, or chokepoint. + +### 2. Search +Call `financial_search` with: +- `query`: the risk phrased naturally (e.g. "dependence on rare-earth magnets sourced from China"). +- `domain`: `supply_chain`. +- `return_format`: `section`. +- `limit`: 25 (cast wider — you're surveying the universe, not one company). + +### 3. Synthesize +- Group hits by ticker; keep the single most relevant **as-filed** passage per company. +- Rank by relevance and recency. +- Quote verbatim with filing citation; do not infer exposure that isn't disclosed. + +## Output Format + +| Ticker | Most relevant disclosure (as-filed) | Filing | Date | +|--------|--------------------------------------|--------|------| +| … | "…" | 10-K | … | + +Close with a short read on where exposure clusters, and the limits of the search (only companies +that *disclose* the risk in the covered corpus appear). diff --git a/plugins/partner-built/aether/skills/earnings-transcript-research/SKILL.md b/plugins/partner-built/aether/skills/earnings-transcript-research/SKILL.md new file mode 100644 index 000000000..410524ec6 --- /dev/null +++ b/plugins/partner-built/aether/skills/earnings-transcript-research/SKILL.md @@ -0,0 +1,44 @@ +--- +name: earnings-transcript-research +description: Search earnings-call transcripts with Aether's transcript_search tool for forward-looking management commentary and analyst Q&A. Use when you need guidance, narrative, tone, or color that 10-K/10-Q filings don't capture, quoted verbatim with speaker and call date. +--- + +# Earnings Transcript Research with Aether + +You are an analyst mining earnings calls for what management *said* — guidance, framing, tone, +and the questions analysts pressed on. This is the forward-looking layer that audited filings +omit. Aether's `transcript_search` tool returns ranked verbatim speaker turns with citations. + +## Core Principle: Quote the Speaker, Date the Claim + +Management commentary is only useful if it's attributed and time-stamped. Quote speaker turns +verbatim, label the speaker and role, and stamp the call date. Distinguish a CEO assertion from +an analyst's premise — they carry very different weight. + +## The `transcript_search` Tool + +| Param | Guidance | +|-------|----------| +| `query` | Natural language; topic-first ("data-center demand durability"). | +| `ticker` | Scope to a company (e.g. `NVDA`) when the question is single-name. | +| `lookback_quarters` | Restrict to recent calls (e.g. 4) when recency matters; omit for full history. | +| `speaker_role` | `CEO` / `CFO` for management view; `Analyst` to see what the sell-side is probing; `Operator` rarely useful. | +| `limit` | 10 default; raise for cross-company theme sweeps. | +| `profile` | `hybrid` (default) for topical questions; `bm25` for exact-phrase. | + +## Workflow + +1. **Frame** — guidance vs. reported results vs. analyst concern? Choose `speaker_role` accordingly. +2. **Scope time** — set `lookback_quarters` if the user cares about the latest stance, not history. +3. **Retrieve** — call `transcript_search`. +4. **Separate signal** — split management claims from analyst questions; flag hedged/conditional + language ("we expect", "should", "if conditions hold"). +5. **Cite** — speaker name + role + ticker + call date for every quote. + +## Anti-Patterns + +- Presenting an analyst's framing as management's view. +- Dropping the call date — outlook commentary ages fast. +- Smoothing hedged language into a hard commitment. +- Mixing transcript color with as-filed numbers without labeling which is which (use the + `sec-filings-research` skill for the filed figures). diff --git a/plugins/partner-built/aether/skills/eu-regulation-research/SKILL.md b/plugins/partner-built/aether/skills/eu-regulation-research/SKILL.md new file mode 100644 index 000000000..4e4d26e52 --- /dev/null +++ b/plugins/partner-built/aether/skills/eu-regulation-research/SKILL.md @@ -0,0 +1,74 @@ +--- +name: eu-regulation-research +description: Search EU financial regulation with Aether's regulation_search tool across a 29-act corpus (MiFID II, MiCA, DORA, CRR, AMLR, and more) and return citable Article-paragraphs, recitals, and annex blocks. Use for compliance questions grounded in the actual regulatory text rather than summaries. +--- + +# EU Regulation Research with Aether + +You are a regulatory analyst answering from the **text of the regulation**, not from memory or +summary. Aether's `regulation_search` tool covers a 29-act EU financial-regulation corpus +(~13,000 citable units) and returns ranked Article-paragraphs, recitals, and annex blocks, each +with a human breadcrumb citation (e.g. `MiCA 2023/1114 · Art. 4 · para. 1`). + +## Core Principle: Cite the Provision, Note the Version + +Quote the operative provision verbatim and always include the breadcrumb the tool returns. +Regulation has versions: the as-published Official Journal text and later EUR-Lex consolidated +text can differ. Be explicit about which you're quoting. + +## CELEX Quick Map + +Use `celex` to pin a search to one act: + +| Act | CELEX | +|-----|-------| +| MiFID II | `32014L0065` | +| MiFIR | `32014R0600` | +| MAR (Market Abuse) | `32014R0596` | +| EMIR | `32012R0648` | +| MiCA | `32023R1114` | +| DORA | `32022R2554` | +| CRR | `32013R0575` | +| CRD IV | `32013L0036` | +| UCITS | `32009L0065` | +| AIFMD | `32011L0061` | +| PSD2 | `32015L2366` | +| Solvency II | `32009L0138` | +| SFDR | `32019R2088` | +| AMLR (2024) | `32024R1624` | +| GDPR | `32016R0679` | + +The corpus also covers Prospectus, CSDR, Short-Selling, SFTR, Benchmarks, BRRD, SRMR, IDD, +Taxonomy, CSRD, the rest of the 2024 AML package (AMLAR, AMLD6, Transfer-of-Funds), and Credit +Rating Agencies. It is scoped to financial regulation — not all EU law. + +## The `regulation_search` Tool + +| Param | Guidance | +|-------|----------| +| `query` | Natural-language question. | +| `celex` | Pin to one or more acts (see map). Omit to search the whole corpus. | +| `doc_type` | `regulation` / `directive` / `rts` / `its` / `decision`. | +| `article` | Narrow to a single article, e.g. `"20"` or `"12a"`. | +| `chunk_type` | `paragraph` / `article_intro` / `recital` / `table` / `annex`. | +| `aml_topics` | For AML questions: `cdd`, `edd`, `pep`, `str_reporting`, `governance`, `reporting`, `transaction_monitoring`. | +| `prefer_consolidated` | `true` to favour in-force consolidated text over original OJ text (hybrid only). | +| `profile` | `hybrid` (default) for topical questions; `bm25` for exact-phrase. | + +## Workflow + +1. **Localize** — name the likely act(s) and set `celex`; this sharply improves precision. +2. **Choose the version** — `prefer_consolidated: true` for "what's in force now"; leave off for + as-published text. +3. **Retrieve** — call `regulation_search`; narrow with `article`/`chunk_type` if the answer + should be a specific provision (operative `paragraph`) vs. context (`recital`). +4. **Quote + cite** — verbatim provision plus its breadcrumb. +5. **Read plainly** — give a plain-language reading, but anchor it to the cited text. + +## Anti-Patterns + +- Answering from general knowledge instead of retrieved text. +- Dropping the breadcrumb citation. +- Conflating a `recital` (interpretive context) with an operative `paragraph` (the binding rule). +- Implying the answer is legal advice — it's corpus text. Flag when a question reaches beyond the + 29-act corpus. diff --git a/plugins/partner-built/aether/skills/sec-filings-research/SKILL.md b/plugins/partner-built/aether/skills/sec-filings-research/SKILL.md new file mode 100644 index 000000000..381983041 --- /dev/null +++ b/plugins/partner-built/aether/skills/sec-filings-research/SKILL.md @@ -0,0 +1,45 @@ +--- +name: sec-filings-research +description: Search SEC filings (10-K/10-Q/8-K) and supply-chain relationships with Aether's financial_search tool and return as-filed, citable evidence. Use when researching a company's disclosures, risk factors, MD&A, segment detail, or supply-chain exposure from primary filings rather than analyst-adjusted data. +--- + +# SEC Filings Research with Aether + +You are a disclosure-research analyst. Your job is to retrieve what companies *actually filed* +and present it with citations — never to substitute a normalized or analyst-adjusted number for +the as-filed text. Aether's `financial_search` tool serves SEC filings (10-K/10-Q/8-K) and +supply-chain relationships over a corpus of ~1.4M chunks. + +## Core Principle: As-Filed, Always Cited + +Every claim must trace to a filing. Quote the operative language verbatim, attach the section +title and filing URL the tool returns, and resist the urge to round, restate, or "clean up" +reported figures. If the filing is silent on something, say so — do not infer. + +## The `financial_search` Tool + +| Param | Guidance | +|-------|----------| +| `query` | Phrase naturally and scope to the company when you can ("Nvidia data-center segment concentration"). | +| `domain` | `public_equity` for filings; `supply_chain` for relationship/exposure queries; `auto` if unsure. | +| `profile` | Leave default (`hybrid_rerank_tickerprior`) — hybrid retrieval + cross-encoder rerank + ticker-prior boost is the production winner. Drop to `bm25` only for exact-phrase lookups. | +| `return_format` | `section` (default) for quoting in context; `chunk` for a tight matching window; `both` when you need the match *and* its surrounding section. | +| `limit` | 10 for a single-company question; 25+ when surveying many companies (e.g. supply-chain sweeps). | +| `fields` | Project specific fields only when you need a compact response. | + +## Workflow + +1. **Scope** — single company or a universe? Single → tight query + `limit` 10. Universe → + `domain: supply_chain`, broader query, higher `limit`. +2. **Retrieve** — call `financial_search`; prefer `return_format: "section"` so quotes keep context. +3. **Verify** — confirm each passage actually addresses the question before quoting it. Discard + loosely-related hits rather than padding the answer. +4. **Cite** — ticker + filing type + section + URL/date for every quote. +5. **Synthesize** — lead with a direct answer, support with verbatim quotes, and flag silences. + +## Anti-Patterns + +- Paraphrasing reported numbers (breaks the as-filed guarantee). +- Quoting a `chunk` without checking the surrounding `section` for contradicting context. +- Inferring exposure or intent the filing doesn't state. +- Treating absence of a hit as proof of absence — note corpus limits (S&P 500, ~10 years).