aether-developer
Server Details
Cited search over SEC filings, earnings transcripts and EU regulation, with fetch mode. 14 tools.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- EvidInvest/aether-developer
- GitHub Stars
- 0
- Server Listing
- aether-developer
TDQS
Scored across 14 tools
The four search tools (search, financial_search, transcript_search, regulation_search) overlap heavily, but the descriptions explicitly delineate them: search is the default, the others force a single corpus. The remaining tools (holdings_by_*, partner_*, seller_*) map to clearly distinct resources and actions, so misselection risk is mostly confined to the search family.
Strong recurring patterns: a *_search family (financial_search, transcript_search, regulation_search, partner_search, partner_proxy_search), a seller_* CRUD family, and holdings_by_* siblings. Minor deviations (bare `search`, `list_partners` vs `seller_list_my_documents`) keep it from a perfect score but it stays readable and predictable.
14 tools is within a reasonable band and each earns its place, but the server hosts two distinct personas — a data-consumer surface (search/holdings/partners) and a full seller life-cycle (signup, publish, register, list) — which makes it slightly heavy for a single server.
Core consumer workflows are covered: cross-corpus and single-corpus search, transcripts, EU regulation, and both directions of 13F ownership, plus a complete seller lifecycle (signup → publish documents → register endpoints → list). Minor gaps remain (e.g. no explicit company-profile/structured-statement tool), but agents can work around them via search.
Available Tools
14 toolsfinancial_searchARead-onlyIdempotentInspect
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. 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"]).
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Exact SEC CIK values to scope retrieval. Values are normalized to 10 digits. | |
| limit | No | ||
| query | No | 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 an identifier (issuer.ticker / issuer.cik / issuer.company_name / cik[] / accession_number) — a query-less call without one is rejected. | |
| scope | No | 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 only, and always carry `quality_caveat`. | issuer |
| domain | No | public_equity = single-company filing search; supply_chain = cross-company supplier/customer relationship evidence; auto (default) = detect from the query. | auto |
| fields | No | ||
| issuer | No | 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 filer: fast and precise. Strongly recommended on every call, and REQUIRED in fetch mode. | |
| profile | No | 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_rerank_tickerprior` are accepted as aliases of `hybrid` for one release — the cross-encoder they named was removed on 2026-09-11. | hybrid |
| section | No | 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. | |
| form_type | No | Only return these filing forms, for example ["20-F"] or ["6-K"]. | |
| fiscal_year | No | 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 widens ±1 with a caveat. | |
| jurisdiction | No | 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. US filings have an empty jurisdiction tag, so this filter is for non-US scoping only — omit it to include US (the default). A named non-US issuer surfaces even without this filter, via the company-name anchor. | |
| prefer_recent | No | Prefer newer filings when relevance scores are close. Automatically enabled for latest/current/guidance queries. | |
| return_format | No | Response shape. 'section' (default) returns the full SEC section the matching chunk belongs to. 'chunk' returns the matching window only. 'both' returns both. | section |
| accession_number | No | Exact SEC accession number. When set, retrieval is hard-scoped to that filing. | |
| exclude_form_type | No | Exclude filing forms. Company searches already suppress fund/proxy forms by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | "search" = ranked by relevance. "fetch" = no ranking; sections listed in filing-date-desc then document order, and `total` is the number of matching chunks. |
| query | Yes | |
| scope | No | Effective scope after issuer resolution. |
| total | Yes | |
| domain | Yes | |
| source | Yes | |
| results | Yes | |
| latency_ms | Yes | |
| quality_caveat | No | Present when the result is not issuer-precise. Read it before trusting cross-company results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantial operational context: fetch mode latency ('tens of milliseconds') versus slower cross-company calls, the `quality_caveat` response marker, default fund/proxy form suppression, and the requirement of an issuer identifier in fetch mode. It also discloses a real behavioral quirk — the rerank profiles are deprecated aliases whose cross-encoder was removed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the two-mode distinction, and most sentences carry routing or constraint information. It is long and dense for a tool description, and the cross_company/quality_caveat behavior is explained twice (description and `scope` schema), which is mild redundancy rather than waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter tool with nested objects, enums, and an output schema, the description covers everything an agent needs: mode selection, issuer requirement, non-US routing, coverage limits, and when to expect degraded (caveated) results. Return-value detail is correctly delegated to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so the baseline is 3, but the description adds genuine semantics beyond the schema: omitting `query` is what triggers fetch mode, `issuer.company_name` is the required route for non-US issuers with no US ticker, and cross-company calls carry a caveat. Minor parameters (limit, fields, exclude_form_type) get no narrative treatment, keeping it just short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource and scope ('Search SEC filings (10-K, 10-Q, 8-K, registration statements/prospectuses and press exhibits; S&P 500 coverage, ~10 years)'), then immediately splits the tool into two named modes. Coverage boundaries (US SEC plus Sweden/Japan/Korea) are stated, which distinguishes it from siblings like transcript_search and regulation_search without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use each mode: 'Use fetch when you already know WHICH document you want and only need its text' versus search mode passing `query`. It also names the alternative scope and when NOT to use it — 'Use scope=cross_company deliberately only for questions that are genuinely about many companies' — and warns to check for `quality_caveat` on those calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
holdings_by_managerARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Exact 10-digit filer CIK, e.g. 0002012383. Preferred when known. | |
| limit | No | Positions to return, 1-200 (default 25), ranked by value. | |
| issuer | No | 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.company_name` fills in `manager` when you have not set them. NOTE this tool identifies the FILING MANAGER, not the issuer held — for who owns a stock, use holdings_by_security. Ownership is a structured lookup, so there is no scope or quality_caveat here — `coverage_caveat` is this tool's equivalent. | |
| period | No | Quarter end as YYYY-MM-DD. Defaults to the most recent loaded quarter. | |
| manager | No | Manager name, partial match, e.g. 'Bridgewater' or 'BlackRock'. Largest matching filer wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile, and the description adds substantial behavioral context on top: the quarter-end coverage window, the in-progress newest quarter with fallback to a prior quarter named in coverage_caveat, the 45-day filing lag, and the explicit statement that no email is available or should be inferred.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded, leading with what a 13F book is before constraints. It is long for a single description and a few clauses (signatory/contact detail list) are marginally over-detailed, but nearly every sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers lookup modes, coverage window, lag, fallback behavior, data limitations, and what is not returned, which is everything needed for an agent to call this correctly without an output schema. The one ambiguity it cannot resolve (exact return shape) is minor given the enumerated output fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3; the description nonetheless adds semantics beyond the schema, notably that partial manager names resolve to the largest matching filer and the alias behavior of issuer/manager fields. Some of this (largest matching filer) is echoed in the schema text, slightly limiting the added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('an institutional manager's reported equity book from SEC Form 13F') and enumerates the outputs (top positions by value, QoQ share changes, new/increased/decreased flags). It explicitly disambiguates from the sibling: 'this tool identifies the FILING MANAGER, not the issuer held — for who owns a stock, use holdings_by_security.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives triggering example questions, both lookup modes (partial manager name vs exact CIK), and a named alternative with the condition that selects it (holdings_by_security for issuer ownership). Exclusion list ('no shorts, cash, bonds or non-US listings') further bounds when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
holdings_by_securityARead-onlyIdempotentInspect
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. Amendments are excluded. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cusip | No | 9-character CUSIP, e.g. 67066G104. Use when the ticker is unmapped. | |
| limit | No | Holders to return, 1-100 (default 20), ranked by value. | |
| issuer | No | 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 have not set it. Ownership is a structured lookup, so there is no scope or quality_caveat here — `coverage_caveat` is this tool's equivalent. | |
| period | No | Quarter end as YYYY-MM-DD, e.g. 2026-03-31. Defaults to the most recent loaded quarter. | |
| ticker | No | Ticker, e.g. NVDA. Resolved to a CUSIP internally. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnly/idempotent annotations: discloses per-filer CIK aggregation (BlackRock's 42 lines), exclusion of amendments, the total_value_usd double-counting caveat and coverage_caveat flag, the newest-quarter fill-in lag, and the full 13F limitations (no shorts/cash/bonds/non-US, 45-day filing delay). This is exactly the operational context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the example questions, then layers coverage and caveats. It is long, but nearly every clause carries non-redundant semantics; only the per-line aggregation aside is slightly verbose relative to the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-param, nested-object tool with no output schema, the description covers coverage windows, aggregation semantics, amendment handling, data-quality caveats, and source verifiability (accession/EDGAR URL). Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), and the description still adds value: it explains ticker→CUSIP resolution, that a raw CUSIP is the fallback when a ticker is unmapped, and that the issuer object is an alias for ticker. It stops short of documenting limit/period defaults in prose, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('institutional holders of a security from SEC Form 13F, ranked by position value'), and the ranking/scope distinguishes it clearly from the sibling holdings_by_manager. An agent immediately knows this answers 'who owns stock X' versus 'what does manager Y hold'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering questions ('who are the largest holders of NVDA', 'which funds added or trimmed') and notes the issuer object is shared with financial_search and search so it can be carried across tools. However it never explicitly names holdings_by_manager or states when-not to use this tool, so alternatives are only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_partnersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Restrict to partners offering this mode. | any |
| limit | No | ||
| ticker | No | Optional — filter to partners that cover this ticker (either in indexed docs or proxy endpoints). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| partners | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive, closed-world), so the description adds real value by disclosing that proxy mode consumes prepaid Aether credits per call and that costs are returned for budgeting. It does not cover pagination or result-shape behavior, but the credit-consumption disclosure is meaningful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core purpose, then mode semantics, then the practical budgeting instruction. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required, yet the description still notes that per-call credit costs are returned. Combined with mode explanations and sibling routing, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 67% schema coverage, the description compensates by explaining the semantics of the mode values ('indexed' = free partner_search, 'proxy' = proxied calls) and clarifying that ticker filtering spans both indexed docs and proxy endpoints. The limit parameter is left to the schema, but the added meaning is substantive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List active marketplace partners (sellers)') and immediately explains the differentiated concept of partner 'modes'. It clearly separates itself from siblings partner_search and partner_proxy_search, which it names and describes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition: call this to obtain per-call credit costs before invoking partner_proxy_search, and explains that indexed mode maps to partner_search. It stops short of explicit when-not-to-use or exclusion criteria, but the routing context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partner_proxy_searchARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| issuer | No | 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. | |
| partners | Yes | Seller slugs to route to. Empty/omitted = no fan-out (you MUST pick partners explicitly for credits to be consumed — no surprise charges). | |
| endpoints | No | Optional: scope to specific endpoint slugs (format `<seller>/<endpoint>`). Otherwise all active endpoints of the named partners. | |
| ticker_filter | No | 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 entirely. | |
| confirm_charge | No | Safety acknowledgement. Must be true to actually execute the call. If false (or omitted), returns a dry-run quote with estimated charges. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| source | Yes | |
| dry_run | Yes | True when confirm_charge was false — quote only, no credits consumed. |
| results | Yes | |
| latency_ms | Yes | |
| charges_by_seller | Yes | |
| total_charge_usd_cents | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the read-only/idempotent annotations: each call consumes prepaid credits regardless of result count, credentials are held by Aether so the agent never sees URL or token, confirm_charge=false yields a dry-run quote, and a wrong ticker guess spends credits on the wrong endpoint. These are exactly the cost and side-effect disclosures an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core action, and every sentence carries operational load (cost model, credential model, routing rule, prerequisite). Some issuer guidance overlaps the schema description but the redundant phrasing reinforces the credit-loss risk rather than wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers everything else: prerequisites, cost model, credential handling, dry-run mode, and routing behavior. For a 7-parameter, credit-spending, open-world tool this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, and the description fills in the semantics that matter most: why issuer/ticker routing is preferred over query-text detection, that empty partners means no fan-out and no charges, and the legacy nature of ticker_filter. `query` and `limit` remain undescribed in both places, keeping this short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: 'Route the agent's query server-to-server to one or more seller-registered API endpoints.' This is specific and actionable. However, it never contrasts itself with the closely named sibling partner_search, leaving the agent to infer which of the two routing tools to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite ('Use list_partners first to discover available endpoints and per-call credit costs') and a conditional routing rule ('Pass `issuer` when the question is about one company'). It also warns that partners must be chosen explicitly to avoid surprise charges. Missing an explicit when-NOT-to-use-this / partner_search distinction, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partner_searchARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Natural-language search query. | |
| scope | No | 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. | issuer |
| issuer | No | 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. | |
| profile | No | hybrid | |
| partners | No | Optional list of seller slugs to scope the search to. Empty/omitted = all active sellers. | |
| doc_types | No | Optional filter on doc_type field — e.g. ['research_note', 'supply_chain']. | |
| ticker_filter | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| scope | No | Effective scope after issuer resolution. |
| total | Yes | |
| source | Yes | |
| results | Yes | |
| latency_ms | Yes | |
| quality_caveat | No | Present when the result is not issuer-precise. Read it before trusting cross-company results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, so the bar is lower. The description goes beyond them by disclosing the returned shape (ranked chunks with per-document attribution and license terms), the `quality_caveat` triggered in cross_company mode, and the cost implications of unscoped searches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the what-then-how-then-prerequisite ordering. Every sentence carries information, though the middle sentence packs scope default, quality_caveat, and ticker-coverage behavior together tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter search tool with a nested issuer object and an output schema, the description covers the decision-critical pieces: issuer vs cross_company, quality_caveat, partners scoping, and the list_partners prerequisite. The legacy ticker_filter and profile/limit tuning are left to the schema, which is reasonable but leaves a small gap for the deprecation-adjacent flag.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the description still adds real meaning: it explains the issuer-vs-scope interaction (partner coverage is declared by ticker, so a named issuer narrows results rather than relying on query-text detection), and frames `partners` as a cost-scoping lever. It does not touch limit, profile, doc_types, or ticker_filter, which the schema covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and a precisely scoped resource (marketplace partner documents published by registered sellers), with concrete examples of doc types. The seller-published scope is distinct from siblings like financial_search and regulation_search, and it explicitly names list_partners as a related-but-different tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditional guidance: pass `issuer` when the question concerns one company, otherwise the call defaults to scope=cross_company and the response sets `quality_caveat`. It also routes the agent to list_partners for discovering sellers before scoping via the `partners` arg.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regulation_searchARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| celex | No | 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: pass it whenever you know which act you mean. Omitting it searches the whole 29-act corpus as scope=cross_company, with a quality_caveat. | |
| limit | No | ||
| query | Yes | Natural language query | |
| scope | No | 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 always applies. | issuer |
| article | No | Optional single-article filter, e.g. "20" or "12a" | |
| profile | No | hybrid | |
| doc_type | No | Optional filter: regulation | directive | rts | its | decision | |
| aml_topics | No | Optional topic tag filter: cdd | edd | pep | str_reporting | governance | reporting | transaction_monitoring | |
| chunk_type | No | Optional filter: paragraph | article_intro | recital | table | annex | |
| prefer_consolidated | No | Prefer EUR-Lex consolidated text over original OJ text at equal relevance (hybrid only). Leave off to favor the as-published OJ text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| scope | No | Effective scope: issuer when anchored to a CELEX, else cross_company. |
| total | Yes | |
| source | Yes | |
| results | Yes | |
| latency_ms | Yes | |
| celex_filter | No | |
| quality_caveat | No | Present when the result is not CELEX-precise. Read it before trusting corpus-wide results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds real behavioral context beyond them — the quality_caveat field emitted on unanchored searches, the relevance-only ranking in that mode, the latency difference, and how prefer_consolidated changes which text variant is returned. It does not discuss limit/pagination behavior, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with corpus scope, then usage, then filters, in one dense paragraph with no filler sentences; every clause carries content. It is long and repeats the celex imperative already stated in the schema, which keeps it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter search tool with an output schema present, the description covers what the agent still needs: corpus boundary, anchor-vs-unanchored behavior, the degraded-result signal, and the narrowing filters. Return-value details are legitimately left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% (baseline 3), and the description adds prioritization the schema cannot: celex as the mandatory 'anchor' equivalent to naming an issuer, article as a know-it-when-you-see-it filter, and the issuer-vs-cross_company default relationship. It reinforces rather than merely repeats the schema, though the raw field definitions for limit and profile remain the sole source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and a precisely bounded resource (the text of EU financial regulation across a named 29-act corpus), enumerating the covered domains and the returned unit types (Article-paragraphs, recitals, annex blocks with breadcrumbs). It also explicitly carves out scope ('not all EU law'), so an agent can separate it from the sibling filing/partner/transcript search tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: ALWAYS pass `celex`, add `article` when known, and use `scope=cross_company` deliberately for genuinely corpus-wide questions, with a concrete example ('which acts impose a 72-hour incident-reporting deadline'). It also names the consequence of the wrong path (no celex -> whole-corpus, relevance-only, quality_caveat), which is exactly the when/when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyIdempotentInspect
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. Ownership questions do not go through search at all: holdings_by_security and holdings_by_manager.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max hits to return (1-50, default 10). | |
| query | No | 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 `issuer` (ticker, cik or company_name) or a single-element `tickers`, optionally narrowed with `fiscal_year`; a query-less call with no identifier is rejected. Fetch fans out to sec/jp/kr/transcripts only — EU regulation has no issuer, so "every article, newest first" answers nothing. | |
| scope | No | 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-ranked only, and always carry `quality_caveat`. | issuer |
| issuer | No | 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 that can use it. Strongly recommended on every call. | |
| corpora | No | 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) narrows an OMITTED fan-out to sec/jp/kr, but naming corpora here overrides that. | |
| quarter | No | 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); the filing and regulation corpora ignore it. | |
| section | No | 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 corpora only; it narrows an omitted `corpora` to sec/jp/kr. | |
| tickers | No | 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 the filter to those companies still applies. Prefer `issuer`. | |
| form_type | No | 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 this ALSO narrows an omitted `corpora` to sec/jp/kr rather than merging rows the filter could not reach. | |
| fiscal_year | No | 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, else from the issuer's fiscal year-end; on earnings calls it is that corpus's own labelled fiscal year. An empty year widens ±1 with a caveat. | |
| return_format | No | 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 to, "both" returns both. The earnings-call and regulation corpora ignore it; their unit is a speaker turn / an article. | chunk |
| accession_number | No | 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 `{accession_number}` with no `query` is a legal fetch. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | "search" = a `query` was given and hits are ranked by relevance. "fetch" = no `query`; the identifier and filters select rows and they come back in filing order, unranked. |
| query | Yes | |
| scope | No | Effective scope: the worst case across the corpora that answered. Any cross-company corpus makes the merged answer cross_company. |
| total | Yes | |
| results | Yes | |
| latency_ms | Yes | |
| partial_errors | No | |
| quality_caveat | No | Present when any answering corpus was not issuer-precise. Read it before trusting the result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering safety (readOnlyHint, idempotentHint, destructiveHint=false), the description adds genuinely non-obvious traits: unknown fields are REJECTED with a 400 naming them rather than silently ignored, filters are forwarded rather than dropped, an omitted `corpora` is narrowed by filing filters, cross_company responses set `quality_caveat` that must be checked before trusting results, and each hit carries corpus/accession/URL/confidence/anchor_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose then usage then parameter guidance, and nearly every clause carries operational information. It is a long single block, though, and the dense parenthetical asides (e.g. EU regulation's lack of issuer/form/quarter) make it harder to scan than a short structured list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, nested-object, multi-corpus tool with an output schema, the description covers the decision path (default vs cross_company vs fetch mode), the identifier requirement, the forwarding/narrowing rules, and the response's quality_caveat sentinel. Nothing an agent needs to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents each field's format, so the baseline is 3; the description nonetheless adds cross-parameter routing semantics the schema does not (issuer is forwarded to every corpus so one named subject scopes filings and earnings calls together; fiscal_year forwarding and the empty-year ±1 widening; which filters reach which corpora). It stops short of adding syntax detail beyond the schema for most fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Unified search across every Aether corpus') and enumerates the exact scope: SEC filings, Japan/EDINET, Korea/DART, EU financial regulation, and earnings calls/press-release exhibits, auto-routed and merged. It also names the sibling tools (financial_search / transcript_search / regulation_search) it is distinct from, so an agent can route without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this for MOST questions' and that the caller does NOT have to pick a corpus, plus a concrete failure mode (same-day 8-K earnings exhibits silently missed by filings-only search). It gives a named condition and prohibition for scope=cross_company ('only for questions genuinely about many issuers') and routes ownership queries away from search entirely to holdings_by_security / holdings_by_manager.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_list_my_documentsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| seller_api_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description goes beyond that by disclosing the terminal status values (pending/indexed/failed/revoked) and, more valuably, the deprecation window for the legacy alias vespa_chunk_count — real lifecycle context an agent could not infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded, no filler. The second sentence is dense with parenthetical detail about the alias, but every clause carries information rather than restating the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is optional, and annotations cover the safety profile. Still missing for a list tool: pagination/result-size behavior, whether revoked or failed documents are included by default, and any hint about the required API key.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter seller_api_key has 0% schema description coverage and receives no mention in the description at all; nothing explains that it authenticates the seller or how it is obtained. Since it is the only parameter, one sentence would have closed the gap entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List documents this seller has published') and scopes it to the caller's own seller account, which cleanly separates it from seller_publish_document and seller_list_my_endpoints in the sibling set. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the possessive scoping ('this seller has published'); there is no explicit statement of when to call this versus seller_list_my_endpoints or the various search tools, and no prerequisites or exclusions are given. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_list_my_endpointsARead-onlyIdempotentInspect
List proxy endpoints this seller has registered. Secrets are never returned — only a secret_configured boolean.
| Name | Required | Description | Default |
|---|---|---|---|
| seller_api_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| endpoints | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description is not obligated to restate that. It adds genuinely useful behavioral context about data handling: secrets are never returned and only a `secret_configured` boolean is exposed, which is important for an agent reasoning about sensitive data. It does not mention pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose and followed by the one non-obvious caveat about secret handling. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be explained, and the description still flags the one return detail that matters (secret_configured). Annotations cover safety semantics. What's missing for full completeness is any guidance on auth failure behavior, result volume, or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the single required parameter, seller_api_key. Its name is largely self-explanatory, but the description provides no compensation for the coverage gap (no auth semantics, no scope implications).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('proxy endpoints this seller has registered'), with the possessive scoping making clear it returns the caller's own registrations rather than a global search. This implicitly separates it from siblings like seller_register_endpoint and partner_proxy_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer you call this to inspect endpoints you already registered, but the description names no alternatives (e.g., partner_proxy_search for other parties' endpoints) and states no prerequisites or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_publish_documentAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| content | Yes | Document text. Up to ~2 MB. | |
| license | No | ||
| doc_type | No | ||
| metadata | No | ||
| source_url | No | ||
| seller_api_key | Yes | Your seller API key (aether_sk_…). | |
| external_doc_id | Yes | ||
| ticker_coverage | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | |
| status | Yes | pending until the index worker completes |
| document_id | Yes | |
| published_at | No | |
| external_doc_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-read-only, non-idempotent write; the description adds the async worker model, the `pending` → `indexed` status lifecycle, version-replacement semantics, and the account-status gating that silently stalls indexing. This is exactly the kind of behavior an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, none wasted, front-loaded with the action then the async lifecycle then the constraint. Dense and readable with no repetition of schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanations are not needed, and the description fully covers the async/status/account-gating complexity. The remaining gap is the undocumented optional parameters, which leaves an agent guessing about license, doc_type, metadata, and ticker_coverage at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 22% (2 of 9 params documented), so the description must carry the load. It does add real meaning for external_doc_id (the dedup/replacement key), but title, license, doc_type, metadata, source_url, and ticker_coverage remain undocumented in both description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Publish (or update) a document into the marketplace') and immediately expands scope to the async indexing pipeline. It is clearly separable from siblings like seller_list_my_documents and seller_register_endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly covers the two usage modes (publish vs. update via re-publishing the same external_doc_id) and states a hard prerequisite (account must be status='active', pending_review queues indefinitely). It does not, however, name any alternative tool or contrast with other seller_* tools for edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_register_endpointBInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| slug | Yes | lowercase kebab-case; unique per seller | |
| secret | No | Encrypted at rest; never returned. | |
| auth_method | No | ||
| description | No | ||
| http_method | No | ||
| display_name | Yes | ||
| pricing_model | No | ||
| taxonomy_tags | No | ||
| seller_api_key | Yes | ||
| ticker_coverage | No | ||
| auth_header_name | No | Required when auth_method='header'. | |
| request_template | No | ||
| response_jsonpath | No | e.g. $.results | |
| monthly_request_cap | No | ||
| price_per_call_usd_cents | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| status | Yes | |
| created_at | No | |
| endpoint_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-readonly, non-destructive, non-idempotent, non-open-world mutation. The description adds genuinely useful context beyond that: AES-256-GCM secret storage, server-to-server routing, agents never seeing URL/token, and the active-account routing requirement. It stops short of describing failure modes or rate limits, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four front-loaded sentences with little waste, leading with the core action and security guarantee. The '(Mode B)' fragment is dangling jargon, but otherwise the structure is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the security model and account prerequisite. However, for a 16-parameter mutation with only 25% schema coverage, it omits guidance on most parameters and any failure/validation behavior, leaving notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% across 16 parameters, so the description carries a large burden, yet it only adds meaning for one field (price_per_call_usd_cents). Enums, auth_method, secret, pricing_model, request_template, and the many other params are left undocumented by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Register a proxy endpoint') and clarifies it is for sellers registering endpoints, distinguishing it from siblings like seller_list_my_endpoints and seller_publish_document. The parenthetical '(Mode B)' is unexplained jargon that adds no discriminating meaning for an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a prerequisite ('Account must be status=\'active\'') which gives conditional context, but it never says when to choose this over alternatives or names any sibling. Usage is largely implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_signupAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Lowercase kebab-case identifier shown in attribution. | |
| org_name | Yes | ||
| description | No | Free-text description shown to agents in list_partners. | |
| invite_code | No | Optional operator-issued invite. Bypasses per-IP rate limit and auto-approves. | |
| contact_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| notice | Yes | |
| status | Yes | active | pending_review |
| api_key | Yes | Shown once — cannot be retrieved later. |
| org_name | No | |
| seller_id | Yes | |
| api_key_id | No | |
| api_key_prefix | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by disclosing the one-time API key return, the default pending_review state, the functional consequence (can publish/register but not surfaced in search), and the approval-bypass behaviour of invite_code. These are exactly the traits an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the core action, then the one-time-secret warning, then the state machine, then the invite_code caveat. No filler and every clause carries operational weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need little explanation, yet the description still flags the critical 'shown once' property. Account state, search visibility, and the invite_code escape hatch together give an agent everything needed to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% and the schema itself already documents slug, description, and invite_code semantics. The description reinforces invite_code's purpose and adds approval-bypass context, but says nothing about org_name or contact_email, so it only marginally exceeds what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new marketplace seller account') that is clearly distinct from every sibling (seller_publish_document, seller_register_endpoint, list_partners, etc.). The account-state explanation further pins down exactly what resource is being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the context in which this tool is used (new seller onboarding) and the condition for the invite_code path ('if the operator gave you one'). It does not name a competing tool, but none of the siblings is an alternative to signup, so there is little left to disambiguate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcript_searchARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| order | No | Sort order. 'earliest'/'latest' sort matched hits chronologically (use 'earliest' for onset/first-mention queries); 'relevance' sorts by rank score. | relevance |
| query | No | 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 requires a ticker. | |
| scope | No | 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 ticker filter, so a caveated answer is never secretly a scoped one. | issuer |
| issuer | No | 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. | |
| ticker | No | Optional ticker filter (e.g. NVDA). Legacy alias of `issuer.ticker`. | |
| date_to | No | Point-in-time upper bound on call date, inclusive ISO YYYY-MM-DD | |
| profile | No | hybrid | |
| quarter | No | 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. | |
| date_from | No | Point-in-time lower bound on call date, inclusive ISO YYYY-MM-DD | |
| fiscal_year | No | 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 stated: NVDA fiscal_year 2027 returns the calls held during calendar 2026, AAPL 2025 the Q1-Q4 FY2025 calls. If the requested year matches nothing the search retries once at ±1 and says so in `quality_caveat`. Independent of date_from/date_to, which bound the CALL DATE and still apply on top. | |
| source_type | No | Provenance filter: asr_call = our ASR of the real call (Q&A); furnished_transcript = issuer transcript exhibit; press_release = 8-K press exhibit. | |
| speaker_role | No | Optional speaker role filter: CEO / CFO / Analyst / Operator | |
| lookback_quarters | No | Keep calls within last N quarters (default: no filter) |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | "search" = ranked by relevance. "fetch" = no ranking; segments listed newest call first then in spoken order, and `confidence` is 0 on every result because there is no relevance signal. |
| query | Yes | |
| scope | No | Effective scope after issuer resolution. |
| total | Yes | |
| source | Yes | |
| results | Yes | |
| latency_ms | Yes | |
| ticker_filter | No | |
| quality_caveat | No | Present when the result is not issuer-precise. Read it before trusting cross-company results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description goes well beyond them: it discloses the `quality_caveat` field emitted for unscoped searches, the ±1 fiscal-year retry and its caveat, the latency/slowness delta for cross_company and the tens-of-milliseconds fetch mode, and the absence of ranking in fetch mode. This is exactly the behavioral context structured fields cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long, but front-loaded with the core purpose and mode-selection rules before the parameter guidance, and nearly every sentence carries a distinct routing or behavioral instruction. There is mild redundancy between the description and the schema text for fetch mode and scope, which keeps it out of the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-field documentation is unnecessary, and the description still flags the single return field worth checking (quality_caveat). Given 14 parameters, nested issuer object, 4 enums, and two operating modes, the description covers every decision an agent must make before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the schema already documents most parameters and baseline would be 3. The description still adds real semantics on top: issuer must be a ticker (not cik) in this corpus, fiscal_year is independent of and layered over date_from/date_to, and order='earliest' is the correct pairing for onset questions. Only limit/profile escape mention.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search earnings-call transcripts and press-release exhibits) and immediately scopes it by speaker turn, with concrete examples of what is covered. The closing contrasts it against financial_search ('pair with financial_search to back narrative with filed numbers'), so an agent can distinguish it from siblings without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (guidance, tone, forward-looking color filings lack), when-to-use-alternative (pair with financial_search), and an explicit warning that cross_company should be used deliberately only for genuinely multi-company questions. Fetch mode and onset/first-mention routing are each given their own selection condition, including the correct bound (date pair, not fiscal year).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
- First observed
financial_search - First observed
holdings_by_manager - First observed
holdings_by_security - First observed
list_partners - First observed
partner_proxy_search - First observed
partner_search - First observed
regulation_search - First observed
search - First observed
seller_list_my_documents - First observed
seller_list_my_endpoints - First observed
seller_publish_document - First observed
seller_register_endpoint - First observed
seller_signup - First observed
transcript_search
Related MCP Connectors
Primary-source SEC filing intelligence for AI agents, with exact evidence and provenance.
SEC filings and financial data for AI agents: 59 tools for statements, valuation and supply chains.
SEC filing intelligence for AI agents. Financials, screening, peer comparison for 5,000+ companies.
SEC EDGAR financials, insider trading, and economic data for AI agents. US GAAP + IFRS.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceReturns verified financial data (SEC EDGAR & FRED) with machine-readable citations. Guaranteed zero hallucinations for AI agents.-
- AlicenseAqualityBmaintenanceQuery SEC EDGAR for company filings, financial data, and executive disclosures. Search by company name or ticker, retrieve 10-K/10-Q/8-K filings, and extract structured financials — backed by the official SEC EDGAR API, built for AI agents.4MIT
- AlicenseNot gradedqualityAmaintenanceEnables corporate disclosure research through official SEC EDGAR and GLEIF sources, providing tools for company resolution, filings, insiders, ownership, financials, and private raises via natural language.431Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables querying of SEC EDGAR filings and financial data via natural language, offering tools for company lookup, filing retrieval, XBRL data, and full-text search.60MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.