Skip to main content
Glama

Server Details

AI-enriched financial news for AI agents & trading bots: search, trending, insider, scored 1-10.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
makeev/alphai-mcp
GitHub Stars
2
Server Listing
alphai-news

Available Tools

16 tools
alphai_actionable_nowActionable-now feedA
Read-onlyIdempotent
Inspect

Breaking, decision-grade news from the last few hours. The primary filter is the enricher's actionability score, and the gate is strict: by default only actionability='high' (a time-sensitive development — fresh guidance cut, halted trading, breaking M&A, surprise print) qualifies. Big-but-not-urgent stories scored 'medium' (shape a position over days/weeks) never appear at the default floor no matter how high their novelty — pass min_actionability='medium' to include them, or use alphai_trending / alphai_ticker_news for the broader tape. Market-wide macro releases (an FOMC decision, a CPI/jobs print) qualify and carry no tickers. An empty list on quiet nights/weekends is expected — it means no high-actionability prints in the window, not an error; widen hours or min_actionability before concluding nothing happened. The time window is over each article's PUBLICATION time, not the underlying event's date, so a fresh pick-up of an older event can appear; min_novelty (not the window) is what drops post-event recaps of already-public stories. Ordered novelty-first; syndicated reprints collapsed by story (dedupe=false to keep all), and each collapsed item reports story_id (the story root's uid — the same key alphai_trending and the search tools report for that story), sources_count and sources. Most stories run at a single outlet, so sources_count is usually 1; a value above 1 is the signal, not the number itself. Each item carries the full AI analysis inline — no follow-up alphai_article call needed for depth. Informational and AI-generated — not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoLook-back window in hours; default 6.
limitNoStories; capped at 20 Free/Basic, 50 Pro.
dedupeNoCollapse syndicated reprints by story (default true).
min_noveltyNoMin information_novelty 1-10; default 7.
min_actionabilityNoActionability floor. 'high' (default) = only act-today items; 'medium' also includes stories that shape a position over days/weeks.high

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only note readOnly/idempotent/non-destructive. The description adds a wealth of behavioral nuance: publication-time windowing vs event date, min_novelty as the recaps filter, ordering, dedupe collapse, story_id semantics, sources_count interpretation, inline AI analysis, macro releases without tickers, and quiet-weekend empty lists. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though long, the description is dense with non-redundant, decision-relevant details and no filler. It front-loads the core filter and then systematically clarifies each behavioral subtlety or edge case. Every sentence earns its place for a feed with this many nuances.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential behavioral contract, edge cases, alternatives, and output semantics even though an output schema exists. It explains story_id provenance, sources_count interpretation, why empty lists occur, and that no follow-up call is needed for depth. Given the tool's complexity, nothing important is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema for min_actionability (concrete examples of high vs medium), hours (publication-time semantics), min_novelty (what it filters vs what it doesn't), and dedupe (story-level collapse). Only 'limit' is not elaborated, but the schema fully covers it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific purpose: a breaking, decision-grade news feed filtered by actionability. It differentiates from siblings by explicitly contrasting with alphai_trending and alphai_ticker_news for broader tape coverage, and names the exact actionability gate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: default high-actionability only, how to include medium stories via min_actionability='medium', and when to switch to alphai_trending/alphi_ticker_news. It also tells the agent how to interpret empty results and when to widen hours or lower the floor, which is actionable context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_alerts_listList my alert subscriptionsA
Read-onlyIdempotent
Inspect

List the caller's active ticker news-alert subscriptions, including per-subscription filters (category whitelist, minimum relevance score, delivery mode).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
tierYes
limitYes
alertsNo
currentYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context beyond annotations by specifying that only the caller's active subscriptions are returned and that per-subscription filters are included, which clarifies the scope and content of the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tight sentence that front-loads the primary action and resource, then adds the relevant detail about included filters. There is no redundancy with the title or schema, and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with an output schema present, the description is complete: it states whose subscriptions are returned, that they are active, and what fields are included. The output schema covers return-value structure, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so the description has no parameter-level responsibility. Per the rubric baseline for 0-param tools, a score of 4 is appropriate; the description does not need to add parameter meaning that does not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('the caller's active ticker news-alert subscriptions'), and the kind of data included ('filters: category whitelist, minimum relevance score, delivery mode'). It clearly differentiates this from sibling tools like alphai_alerts_subscribe and alphai_alerts_unsubscribe by focusing on read-only listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied strongly by the verb and noun phrase: use this when the agent needs to see the caller's existing alert subscriptions. However, there is no explicit guidance about when not to use it or how it compares to related alert-management tools, so the agent must infer usage from the name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_alerts_subscribeSubscribe to ticker alertsA
Idempotent
Inspect

WRITE operation (creates/updates a saved subscription in the caller's account). Subscribe the caller to ticker news alerts. Optional category_filter (e.g. ['earnings','insider']) restricts which categories trigger; min_relevance_score raises the threshold. This is a partial update: omitting either field on an existing subscription preserves its current value, and a brand-new subscription defaults min_relevance_score to 7. Note the threshold applies to email and telegram delivery; a Pro webhook receives the full matched stream and filters on its own. Raises tier_not_paid / unknown_ticker / limit_reached. Crypto alerts use the -USD ticker (BTC-USD); subscribing to a collider string like BTC binds the stock/ETF that owns it and the response's note field says so.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker to subscribe to (active symbol).
category_filterNoCategories that trigger alerts.
min_relevance_scoreNoMin relevance to alert on.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
tickerYes
is_activeYes
created_atYes
delivery_modeYes
category_filterNo
min_relevance_scoreYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses partial-update semantics, defaulting behavior for min_relevance_score, delivery-channel threshold differences, specific error conditions, and crypto ticker formatting. This adds substantial behavioral context that annotations alone could not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense yet efficient; every sentence contributes operational guidance such as update semantics, defaults, errors, or ticker edge cases. The write-operation framing is front-loaded, and there is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the presence of an output schema, and the annotations, the description covers all essential operational aspects: what it does, parameter effects, update behavior, errors, and special ticker cases. Nothing critical appears missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is 100%, the description adds meaningful parameter behavior: category_filter restricts triggering categories, min_relevance_score raises the threshold, omitting either field preserves existing values on update, and a new subscription defaults min_relevance_score to 7. The crypto ticker example also clarifies the ticker parameter beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Subscribe'), a clear resource ('ticker news alerts'), and the underlying operation ('creates/updates a saved subscription in the caller's account'). It clearly distinguishes this from sibling tools like alphai_alerts_list or alphai_alerts_unsubscribe by framing it as the write/subscribe operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly identifies this as the tool for subscribing or updating an existing subscription, which gives strong contextual guidance. It does not explicitly name alternatives or state 'use list/unsubscribe for other cases,' but the write-vs-read framing and sibling names make the intended use unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_alerts_unsubscribeUnsubscribe from ticker alertsA
DestructiveIdempotent
Inspect

WRITE operation (deactivates a saved subscription in the caller's account). Soft-disable the caller's news-alert subscription for the given ticker. Idempotent — returns {removed: false} if the alert was already inactive. Raises unknown_ticker for an unrecognized symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker to unsubscribe from.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by disclosing that the operation is a soft-disable, idempotent with a specific return value when already inactive, and raises unknown_ticker for unrecognized symbols. This adds meaningful behavioral context that the annotations alone do not provide, and it fully aligns with the destructiveHint and idempotentHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the operation type, and each sentence provides distinct value: the action, the idempotent behavior, and the error condition. There is no filler or repetition of information already fully covered by the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter subscription tool with output schema and annotations available, the description is complete. It covers the operation's effect, idempotency result, and error behavior, giving an agent everything needed to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single ticker parameter at 100% coverage. The description adds further meaning by explaining the effect of the ticker in context — it identifies which subscription is being deactivated — and by noting the unknown_ticker error for unrecognized symbols, enriching the schema's basic definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action: a WRITE operation that deactivates a saved news-alert subscription for a given ticker. It distinguishes itself from the sibling tools by explicitly describing a soft-disable of a subscription, which makes it unambiguous relative to alphai_alerts_subscribe and alphai_alerts_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use the tool: when the caller wants to deactivate their news-alert subscription for a ticker. It does not explicitly name alternatives or exclusion conditions, but the operation is specific enough that an agent can infer the context without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_articleFetch article by uidA
Read-onlyIdempotent
Inspect

Load one article by its uid, with full enrichment (per-ticker analysis, context, key entities). Use it for a uid you have out-of-band — one the user pasted, an id from the ChatGPT search connector, or to expand a condensed *_recent item from alphai_pair_analysis. You do NOT need it for items returned by the feed tools (alphai_news_search / alphai_trending / alphai_ticker_news / alphai_actionable_now / alphai_insider_news) — those already carry this same analysis inline. ONE exception: on an SEC earnings filing (source_type sec_form8k or sec_form6k) this tool adds earnings, AlphaAI's structured read of the filing with every figure checked against the filing text, which the feed tools never populate. To go from a ticker straight to those reads, use alphai_earnings instead. The full article body is intentionally not served (copyright); this is the canonical single-article lookup, not a deeper view of a feed item. Raises not_found for an unknown uid.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe article uid from any feed response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
uidYes
urlYes
titleYes
sourceYes
insiderNo
sourcesNo
summaryYes
tickersNo
analysisNo
categoryYes
earningsNo
story_idNo
created_atYes
source_typeNo
banner_imageNo
source_domainYes
sources_countNo
ownership_formNo
time_publishedYes
relevance_scoreYes
read_time_minutesNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so the description only needs to add context beyond that. It does: the full article body is intentionally not served due to copyright, the tool raises not_found for unknown uids, and it populates `earnings` for SEC filings. These are meaningful behavioral disclosures not present in structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and somewhat long, but each sentence earns its place: purpose, usage scenarios, non-usage cases, the SEC exception, the copyright limitation, and the not_found error. The only slight redundancy is the closing phrase 'canonical single-article lookup, not a deeper view of a feed item,' which partially restates earlier points, but it does reinforce the distinction effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description covers all essential operational context: how to obtain a valid uid, when to avoid the tool, the one exception where it adds unique value (SEC earnings), behavior on unknown uids, and the copyright-driven omission of the full body. The presence of an output schema relieves it from documenting return fields, so nothing necessary is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the uid parameter. The description adds real value by characterizing which uids are appropriate (user-pasted, search-connector ids, condensed `*_recent` items) and which are unnecessary (feed tool items already contain the analysis inline). This goes beyond the schema's generic 'any feed response' phrasing and gives the agent pragmatic selection guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Load one article by its uid, with full enrichment.' It then distinguishes itself from siblings by declaring itself 'the canonical single-article lookup, not a deeper view of a feed item,' which clearly separates it from the feed tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use scenarios: out-of-band uids, user-pasted ids, ChatGPT search connector ids, and expanding `*_recent` items from alphai_pair_analysis. It also explicitly states when NOT to use it (feed tool items already carry the analysis inline), names the exception (SEC filings add `earnings`), and points to alphai_earnings as the alternative for ticker-to-earnings lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_calendarEconomic calendar (US macro releases)A
Read-onlyIdempotent
Inspect

The forward half of the macro loop: the official US economic calendar — scheduled FOMC decisions (with SEP and press-conference markers) and minutes, CPI, PPI, the jobs report, GDP estimates, PCE, retail sales, weekly jobless claims and JOLTS, from the agencies' own schedules. Ask it 'what macro releases are coming this week', then read alphai_macro for what a release meant once it is out. Each occurrence carries a stable uid that survives reschedules, plus phase: 'elapsed' means the scheduled moment passed (NOT that the agency published — check schedule_status; schedule_basis='inferred' marks dates derived from the release cadence rather than printed by the agency). Elapsed SCHEDULED occurrences include coverage: the top feed stories about that release (uid + relevance score) — fetch depth per story via alphai_article; cancelled/postponed rows return coverage=null. days_back counts from today's UTC midnight, so the default 0 still includes today's already-released prints with their coverage. This tool is US MACRO only: for a company's next earnings date, read next_report_date on alphai_tickers. Informational and AI-generated — not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
days_backNoDays back from today's UTC midnight; default 0 still includes today's releases. Also capped by your archive depth.
days_aheadNoDays forward from now; default 7.
event_keysNoNarrow to specific series; default all.
importanceNoFilter by importance tier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the readOnly/idempotent annotations by explaining subtle behaviors: elapsed means the scheduled moment passed, not that the agency published; schedule_basis='inferred' marks cadence-derived dates; cancelled/postponed rows return coverage=null; elapsed SCHEDULED occurrences include coverage with uid and relevance scores. It also clarifies days_back semantics around UTC midnight. This is rich, non-obvious behavioral disclosure that an agent needs to interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense and mostly front-loaded: the core purpose appears in the first sentence, with sibling routing early. The later caveats about phase, schedule_basis, coverage, and cancellation behavior are necessary for correct interpretation of results. It could be tightened slightly, but the length is justified by the complexity of the calendar semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of an output schema, the description covers everything an agent needs: what data is included, how to filter, how to interpret elapsed/inferred/cancelled states, what coverage contains, and where to go for related data. The references to alphai_macro, alphai_article, and alphai_tickers close the remaining contextual gaps. Nothing critical is missing for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the schema already describes days_back, days_ahead, event_keys, and importance. The description adds meaningful semantic nuance beyond the schema: days_back counts from today's UTC midnight so default 0 still includes today's already-released prints with coverage, and event occurrences carry stable uids and phase semantics. This elevates it above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource: it provides the official US economic calendar with scheduled macro releases. It lists concrete event types (FOMC, CPI, PPI, jobs report, GDP, PCE, etc.) and explicitly distinguishes itself from siblings: alphai_macro for post-release interpretation and alphai_tickers for earnings dates. This makes the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage direction: ask it about upcoming macro releases, then use alphai_macro once a release is out. It also states an exclusion boundary: 'This tool is US MACRO only' and redirects earnings-date lookups to alphai_tickers.next_report_date. It even routes story depth retrieval to alphai_article, so the agent knows exactly when to pick this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_earningsEarnings reads for a tickerA
Read-onlyIdempotent
Inspect

AlphaAI's own structured read of a company's earnings reports, newest first, plus its next confirmed report date. Each read is produced from the company's OWN SEC filing — an 8-K item 2.02 for US filers, a 6-K earnings release for foreign private issuers — within minutes of it reaching EDGAR, and every figure in it was checked against the filing text before publication, so it is the arbiter when press coverage of the same quarter disagrees. Carries reported metrics with year-over-year and sequential comparisons, segments, guidance, drivers, concerns and management quotes. This is the tool to reach for after alphai_tickers gives you a next_report_date: the feed tools return articles ABOUT a quarter, this returns the filing's own numbers. Share classes bridge, and each row reports the class the filing was made under. Depth is shallow by construction — AlphaAI's filing history starts in mid-June 2026 and reports are quarterly — so most tickers carry one or two reads and an empty list is a normal answer, not an error. Informational and AI-generated — not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol, e.g. 'NVDA'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tickerYes
reportsNo
unknown_tickerNo
next_report_dateNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description is consistent with them while adding substantial context beyond them: source documents (8-K item 2.02 / 6-K), verification against the filing text, data-depth limits ('filing history starts in mid-June 2026'), and the crucial caveat that 'an empty list is a normal answer, not an error' — which prevents an agent from misclassifying a valid empty result as a failure. The 'arbiter' role and share-class bridging further enrich the behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (~170 words) but dense — every sentence carries distinct information: purpose, provenance, content fields, usage routing, data-depth caveats, and disclaimer. It is front-loaded with the core purpose, and the boilerplate disclaimer earns its place for an AI-generated financial tool. Slightly longer than necessary, but nothing is wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description still previews the content fields anyway. It covers ordering, sources, verification, when to use, data-recency limits, empty-list semantics, and share-class behavior; annotations cover the safety profile (read-only, idempotent, non-destructive). Nothing an agent needs to call this correctly is missing, including edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the single ticker parameter is already documented as 'Ticker symbol, e.g. 'NVDA'.' The description adds only marginal parameter-adjacent context via the share-class note, but it doesn't add syntax or format details beyond the schema. Per the rubric, baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb+resource: 'structured read of a company's earnings reports, newest first, plus its next confirmed report date.' It also distinguishes itself from siblings explicitly — 'the feed tools return articles ABOUT a quarter, this returns the filing's own numbers' — so an agent can tell it apart from alphai_ticker_news, alphai_news_search, and alphai_article without opening their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'This is the tool to reach for after alphai_tickers gives you a next_report_date.' It also names the alternative class of tools and states what they do differently ('the feed tools return articles ABOUT a quarter'), giving clear when-not-to-use signal. No inference is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_insider_newsInsider & ownership newsA
Read-onlyIdempotent
Inspect

Insider-transaction news: SEC Form 4 insider trades (company officers, directors and 10% owners buying or selling their own stock). Optionally filter by ticker, date range, and whether the trade ran under a pre-scheduled Rule 10b5-1 plan (is_10b5_1=false hides planned sales, leaving discretionary trades). Cursor-paginated; same shape (incl. the full inline AI analysis) as alphai_news_search, and the same sort='ingested' delta polling for watching new filings arrive. Roughly equivalent to alphai_news_search(category='insider'), exposed as a dedicated tool. Sets unknown_ticker=true only for an unrecognized ticker filter; a delisted symbol serves its history with delisted=true and renamed_to set when the company continues under a new ticker. When the ticker is a crypto collider (BTC = the Grayscale ETF, not the coin), ticker_note names the -USD coin ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNopublished (default): newest first. ingested: delta polling — only Form 4 events added since your cursor, ascending; next_cursor is always returned (empty items = caught up, keep the cursor and poll later). Prefer this for watching insider activity: a filing arrives days after its transaction date, so it can land below the newest page of a publish-ordered feed. A cursor only works with the sort mode that issued it.
limitNoAlias for page_size.
cursorNoOpaque cursor from a prior next_cursor.
tickerNoRestrict to one ticker, e.g. 'AAPL'.
to_dateNoOn/before this ISO time (UTC if naive); a bare date covers that whole day. Bounds when the filing reached the feed, not the insider's transaction_date.
from_dateNoOn/after this ISO time (UTC if naive); a bare date means that day's midnight.
is_10b5_1NoRule 10b5-1 filter, on the same field each item's insider block reports. Omit for every event; false = discretionary trades only (a 10b5-1 ladder was scheduled months earlier, so it carries no timing decision); true = plan events only. Event-level: a filing mixing plan and discretionary tranches counts as a plan event.
page_sizeNoItems/page; capped at 20 Free/Basic, 50 Pro.
min_relevanceNoMinimum AI relevance score, 1-10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
itemsNo
delistedNo
renamed_toNo
next_cursorNo
ticker_noteNo
unknown_tickerNo

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the read-only safety profile is covered. The description goes well beyond that: unknown_ticker behavior, delisted-symbol handling with renamed_to, crypto-collider disambiguation with ticker_note, the cursor-sort coupling rule, event-level 10b5-1 classification, and the caveat that to_date/from_date bound feed-ingest time rather than transaction date. Nothing contradicts 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence carries distinct value: the subject, the filters, the pagination contract, the sibling equivalence, ticker edge cases, and the crypto-collider note. It front-loads the core Form 4 purpose and only then adds edge-case behavior. Given the number of non-obvious behaviors it must convey, the length is justified and well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 9 parameters and an output schema, yet the description covers all behavior areas an agent needs to invoke it correctly: selection context, filtering semantics, pagination and cursor rules, sort-mode differences, ticker edge cases, and unknown-input signaling. The output schema handles return-shape details, so the description's job was to explain the non-obvious behavioral semantics, which it does completely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description does far more than echo it. It explains the insider field, the event-level aggregation quirk for mixed plan/discretionary filings, what a cursor can and cannot do across sort modes, the delta-polling contract (empty items = caught up, keep polling), and the date-filter semantic difference between feed time and transaction date. This is substantial added meaning beyond the schema's property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Insider-transaction news: SEC Form 4 insider trades...' It names the actors (officers, directors, 10% owners), the form type, and the optional filtering dimensions. It explicitly positions the tool against its sibling, 'Roughly equivalent to alphai_news_search(category='insider'), exposed as a dedicated tool,' which lets an agent distinguish it from alphai_news_search without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete when-to-use guidance: use this when you need Form 4 insider filings; use the ingested sort for delta polling to watch new filings arrive; use is_10b5_1=false to isolate discretionary trades for timing analysis. It also explains the relationship to alphai_news_search(category='insider') rather than other siblings and flags the preference for ingested sorting when watching insider activity because filings arrive days after the transaction date.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_macroMacro tape (market-wide)A
Read-onlyIdempotent
Inspect

The market-wide macro tape from the last N hours: central-bank decisions and statements (Fed/FOMC), inflation and jobs prints, commodities, geopolitics — one call, novelty-first, so on a release day the release itself leads and the commentary follows. Use this for 'what did the Fed say', 'any macro news today', 'what's moving the whole market'. Macro rows are market-wide events and mostly carry NO tickers — that is by design; each item still carries the full AI analysis inline. Narrow with categories, or raise min_relevance to 7 to keep roughly the release-day events and drop the commentary. Syndicated reprints are collapsed by story (dedupe=false to keep all), and each collapsed item reports story_id (the story root's uid — the same key alphai_trending and the search tools report), sources_count and sources; sources_count is usually 1, a value above 1 is the signal. For what is COMING — the scheduled release calendar — use alphai_calendar. Informational and AI-generated — not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoLook-back window in hours; default 24.
limitNoItems; capped at 20 Free/Basic, 50 Pro.
dedupeNoCollapse syndicated reprints by story (default true).
categoriesNoSubset of the macro categories; default all three.
min_relevanceNoMin AI relevance 1-10; default 4. 7+ keeps release-day events.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this read-only and idempotent, and the description adds non-obvious behavior: novelty-first ordering, macro rows deliberately lacking tickers, dedupe collapsing by story, story_id being the shared key with alphai_trending/search, and sources_count > 1 as a signal. It also discloses the informational/not-investment-advice caveat. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place: the core definition is front-loaded, followed by use cases, parameter tuning guidance, output conventions, and a clear pointer to the calendar sibling. Despite the density, it remains structured and readable, with no filler or tautology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the comprehensive schema, the output schema, and read-only annotations, the description covers everything an agent needs: scope, use cases, dedupe semantics, story_id linkage to sibling tools, relevance tuning, and the calendar alternative. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 5 parameters; the baseline is 3. The description adds genuine semantic value beyond the schema by explaining min_relevance thresholds and the dedupe behavior, and by mentioning category narrowing. It does not add much for hours/limit, but those are self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact resource (market-wide macro tape over the last N hours) and enumerates the event types: central-bank decisions, inflation/jobs prints, commodities, geopolitics. It differentiates itself from siblings by emphasizing 'market-wide' and 'mostly carry NO tickers', and the companion alphai_calendar is explicitly contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete use cases ('what did the Fed say', 'any macro news today', 'what's moving the whole market') and an explicit when-not-to-use: for scheduled upcoming events, use alphai_calendar. It also provides operational guidance like raising min_relevance to 7 to keep release-day events, which helps an agent pick parameters correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_pair_analysisTwo-ticker read-acrossA
Read-onlyIdempotent
Inspect

Compare two tickers (e.g. NVDA and AMD). Returns news naming BOTH companies — where the cross-ticker read-across lives (a peer's print resetting the other's setup, a shared supplier/customer) — plus each ticker's own recent news for context. The two recent lists are condensed (headline + scalar signals; the full analysis is on BOTH — fetch alphai_article(uid) for a recent item's full write-up). Pair analysis covers active tickers only: any symbol that isn't a recognized active ticker is listed in unknown_tickers and contributes no rows (delisted-symbol history lives in alphai_ticker_news). Informational and AI-generated — not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows per list (both / each ticker).
ticker_aYesFirst ticker, e.g. 'NVDA'.
ticker_bYesSecond ticker, e.g. 'AMD'.
min_relevanceNoMinimum AI relevance score, 1-10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bothNo
a_recentNo
b_recentNo
ticker_aYes
ticker_bYes
unknown_tickersNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: unknown tickers are listed and contribute no rows, lists are condensed summaries, full analysis is available via alphai_article, and the output is informational not investment advice. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense with no fluff. Each sentence earns its place: the opening defines the tool, the second explains output composition, the third covers edge cases and full-analysis routing, and the final sentence is a necessary disclaimer. Front-loaded scope makes scanning easy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (pair analysis, edge cases, output schema present), the description is remarkably complete. It covers active-ticker restrictions, unknown_tickers behavior, condensed-list semantics, and how to access full analysis, while an output schema already handles return-value details. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add significant parameter-specific meaning beyond the schema; it mentions condensed lists and unknown_tickers, which relate to limit and output behavior, but not directly to min_relevance or ticker formatting. This is adequate but not compensatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and resource ('Compare two tickers... Returns news naming BOTH companies') and clarifies the cross-ticker read-across concept with concrete examples. It distinguishes itself from single-ticker tools like alphai_ticker_news by emphasizing 'BOTH' and by explicitly routing delisted-symbol history to a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: use for cross-ticker read-across, where one peer's news affects the other. It names alphai_ticker_news as the destination for delisted-symbol history and alphai_article for full write-ups, giving an agent explicit routing to alternatives for out-of-scope cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_ticker_newsTicker news feedA
Read-onlyIdempotent
Inspect

Latest news for a single ticker (e.g. 'AAPL'). Cursor-paginated; returns the same shape (incl. the full inline AI analysis) as alphai_news_search. Insider news (SEC Form 4 insider trades) for the ticker is included by default — pass include_insider=false for a pure non-insider feed. min_relevance works exactly as in alphai_news_search (default 4, the full feed) — raise it to keep only what the enricher scored as material for this ticker. Set collapse_stories=true to get one row per story instead of every syndicated reprint. Sets unknown_ticker=true only for an unrecognized symbol string; a delisted symbol serves its history with delisted=true and renamed_to set when the company continues under a new ticker (querying the new ticker includes rows still tagged with the former one). Any share class of an issuer also serves rows tagged with its other listed classes (GOOGL includes rows tagged GOOG). Crypto is addressed as -USD (BTC-USD); a bare coin name nothing else owns resolves to it automatically, and when the bare string belongs to a stock/ETF instead (BTC is the Grayscale ETF), ticker_note names the coin ticker to request.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNopublished (default): newest first. ingested: delta polling — only rows added since your cursor, ascending; next_cursor is always returned (empty items = caught up, keep the cursor and poll later). A cursor only works with the sort mode that issued it.
limitNoAlias for page_size.
cursorNoOpaque cursor from a prior next_cursor.
tickerYesTicker symbol, e.g. 'AAPL'.
page_sizeNoItems/page; capped at 20 Free/Basic, 50 Pro.
min_relevanceNoMinimum AI relevance score, 1-10.
include_insiderNoInclude SEC Form 4 insider news; default true.
collapse_storiesNoCollapse syndicated reprints to one representative per story and populate story_id/sources_count/sources (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
itemsNo
delistedNo
renamed_toNo
next_cursorNo
ticker_noteNo
unknown_tickerNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false; the description adds substantial behavioral context beyond that: cursor/pagination contract, unknown_ticker vs delisted with renamed_to semantics, share-class merging (GOOGL serves GOOG rows), crypto resolution including the bare-name rule and the BTC ETF ambiguity with ticker_note, and collapse_stories deduplication. No contradiction with 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but every clause carries information — the edge cases (delisted, renamed, GOOGL/GOOG, BTC) are all load-bearing for correct invocation, so the length is earned. It is front-loaded with the core purpose and pagination contract before edge cases, though the single wall of text would be easier to scan if broken into shorter grouped sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters and one required field, the description covers the full calling contract: pagination and cursor semantics, both sort modes, shape parity with alphai_news_search, and a thorough catalog of ticker edge cases. The output schema exists, so return values need no explanation. Nothing an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning the schema lacks: min_relevance's default of 4 meaning the full feed and its materiality semantics, include_insider defaulting true and what a 'pure non-insider feed' means, collapse_stories' one-row-per-story effect, ticker's extensive formatting rules (SYM-USD, bare coin resolution, share classes, renamed tickers), and ingested-mode cursor behavior. This goes well beyond the schema's one-line property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific function — 'Latest news for a single ticker' — with a concrete example ('AAPL'). It differentiates from the sibling alphai_news_search by noting it returns the same shape, and the single-ticker scope is unambiguous. The title is expanded with real substance rather than restated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The single-ticker scope makes the core use case clear, and repeated cross-references to alphai_news_search (same shape, same min_relevance semantics) help an agent map against its sibling. The sort modes give concrete when-to-use direction (published vs ingested for delta polling). However, it never explicitly says when not to use it or names alternatives like alphai_insider_news for insider-only queries, so it stops short of explicit exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

alphai_tickersList supported tickersA
Read-onlyIdempotent
Inspect

List supported tickers (US stocks/ETFs, crypto, and foreign listings). Optionally filter by query (prefix on ticker, substring on name, or the company's brand name where that differs from its registered one — q='spacex' finds SPCX, registered as SPACE EXPLORATION TECHNOLOGIES CORP) or by sector. currency is the trading currency (USD for US listings and crypto pairs, the local currency for foreign ones); country is the ISO alpha-2 country of domicile and is null for crypto, which has no jurisdiction of incorporation. Also answers 'when does X next report': next_report_date is the company-confirmed date of the next earnings report, in America/New_York. It is NEVER an estimate — null means AlphaAI holds no confirmed date, which is not the same as the company not reporting. A confirmed date typically surfaces about five weeks ahead, so a null this far out is normal. When the report lands, alphai_earnings(ticker) returns AlphaAI's read of it.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoTicker-prefix matches first, then company-name substring matches.
limitNoMax rows to return.
offsetNoPagination offset.
sectorNoFilter by sector (case-insensitive).

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNo
totalYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnly, idempotent, and non-destructive, and the description adds substantial behavioral detail: null country for crypto, next_report_date is never an estimate, null means no confirmed date rather than no report, typical five-week lead time, and timezone America/New_York. This goes well 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is dense but front-loaded with the core listing purpose and then groups related nuances around q and next_report_date. It is longer than the average description, but nearly every sentence carries semantic value; minor redundancy such as 'company-confirmed' and 'never an estimate' is acceptable for disambiguation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to restate return shapes; it instead covers ambiguity that the schema cannot: brand-name matching, jurisdiction nulls, date confirmation semantics, and the handoff to alphai_earnings. This is complete for a read-only lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 raises it by enriching q with prefix/substring/brand-name matching and a concrete example ('q=spacex' finds SPCX). Other parameters (limit, offset, sector) already carry clear schema descriptions and need little extra.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a precise verb-resource pairing: 'List supported tickers (US stocks/ETFs, crypto, and foreign listings).' It also states an additional purpose, answering when a ticker next reports, and clarifies through the q example how listing and search behave, making the tool's scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear contexts: filter by query or sector, and use next_report_date for confirmed earnings dates. It references alphai_earnings as the follow-up for reading the report after it lands, which orients an agent among siblings, though it does not spell out exhaustive when-not-to-use conditions for every sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetchFetch article (ChatGPT connector)A
Read-onlyIdempotent
Inspect

ChatGPT connector contract: fetch one article by the id returned from search. Returns the enriched digest (summary, per-ticker analysis, category, relevance) — not the full article body — plus the canonical alphai.io URL for citation. Raises not_found for an unknown id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesArticle id from a search result.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
textYes
titleYes
metadataNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark read-only/idempotent/non-destructive, and the description adds valuable non-obvious behavior: it returns only an enriched digest, includes a canonical citation URL, and raises not_found. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action, and every clause carries information (source of id, digest contents, exclusion of full body, citation URL, error behavior).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with rich annotations and an output schema, this description tells the agent everything needed to call it correctly: where the id comes from, what to expect back, and what error is raised.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already says the id is 'from a search result,' so the description adds little semantic value beyond restating that provenance. The not_found detail is behavioral, not parameter-level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: fetch one article by id. The phrase 'not the full article body' plus 'id returned from search' distinguishes it from search and alphai_article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly says the tool is for fetching an article after obtaining an id from search. It does not explicitly name an alternative for full-article needs, but the digest-not-body exclusion provides enough context.

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. Dates show when Glama detected each change.

  1. 13 tool updates
    • Changedalphai_actionable_now6 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Stories; capped at 10 Basic / 50 Pro."New value: +"Stories; capped at 20 Free/Basic, 50 Pro."
      • addedOutput schema / properties / result / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / result / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / result / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
    • Changedalphai_alerts_list1 field changed
      • addedOutput schema / properties / alerts / items / properties / note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedalphai_alerts_subscribe1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedalphai_article5 fields changed
      • addedOutput schema / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
    • Addedalphai_calendar
    • Addedalphai_earnings
    • Changedalphai_insider_news13 fields changed
      • changedInput schema / properties / from_date / description
        Previous value: -"On/after this ISO time (UTC if naive)."New value: +"On/after this ISO time (UTC if naive); a bare date means that day's midnight."
      • addedInput schema / properties / is_10b5_1
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Rule 10b5-1 filter, on the same field each item's insider block reports. Omit for every event; false = discretionary trades only (a 10b5-1 ladder was scheduled months earlier, so it carries no timing decision); true = plan events only. Event-level: a filing mixing plan and discretionary tranches counts as a plan event."
        +}
      • changedInput schema / properties / page_size / description
        Previous value: -"Items/page; capped at 10 Basic / 50 Pro."New value: +"Items/page; capped at 20 Free/Basic, 50 Pro."
      • addedInput schema / properties / sort
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "published",
        +        "ingested"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "published (default): newest first. ingested: delta polling — only Form 4 events added since your cursor, ascending; next_cursor is always returned (empty items = caught up, keep the cursor and poll later). Prefer this for watching insider activity: a filing arrives days after its transaction date, so it can land below the newest page of a publish-ordered feed. A cursor only works with the sort mode that issued it."
        +}
      • changedInput schema / properties / to_date / description
        Previous value: -"On/before this ISO time (UTC if naive)."New value: +"On/before this ISO time (UTC if naive); a bare date covers that whole day. Bounds when the filing reached the feed, not the insider's transaction_date."
      • addedOutput schema / properties / delisted
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / items / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / items / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / items / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / items / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
      • addedOutput schema / properties / renamed_to
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / ticker_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Addedalphai_macro
    • Changedalphai_news_search12 fields changed
      • changedInput schema / properties / from_date / description
        Previous value: -"News on/after this ISO time (UTC if naive)."New value: +"News on/after this ISO time (UTC if naive); a bare date means that day's midnight."
      • changedInput schema / properties / page_size / description
        Previous value: -"Items/page; capped at 10 Basic / 50 Pro."New value: +"Items/page; capped at 20 Free/Basic, 50 Pro."
      • addedInput schema / properties / sort
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "published",
        +        "ingested"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "published (default): newest first, next_cursor pages into older history. ingested: delta polling — rows in the order they became available, ascending; next_cursor is always returned (empty items = caught up, keep the cursor and poll later); time_published is not monotonic within a page. A cursor only works with the sort mode that issued it."
        +}
      • changedInput schema / properties / to_date / description
        Previous value: -"News on/before this ISO time (UTC if naive)."New value: +"News on/before this ISO time (UTC if naive). A bare date (2026-06-01) covers that WHOLE day, so from_date=to_date=<day> returns the day — same reading as REST /api/news/."
      • addedOutput schema / properties / delisted
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / items / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / items / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / items / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / items / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
      • addedOutput schema / properties / renamed_to
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / ticker_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedalphai_pair_analysis15 fields changed
      • addedOutput schema / properties / a_recent / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / a_recent / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / a_recent / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / a_recent / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / a_recent / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
      • addedOutput schema / properties / b_recent / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / b_recent / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / b_recent / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / b_recent / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / b_recent / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
      • addedOutput schema / properties / both / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / both / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / both / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / both / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / both / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
    • Changedalphai_ticker_news11 fields changed
      • addedInput schema / properties / min_relevance
        Added value: +{
        +  "default": 4,
        +  "description": "Minimum AI relevance score, 1-10.",
        +  "maximum": 10,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / page_size / description
        Previous value: -"Items/page; capped at 10 Basic / 50 Pro."New value: +"Items/page; capped at 20 Free/Basic, 50 Pro."
      • addedInput schema / properties / sort
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "published",
        +        "ingested"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "published (default): newest first. ingested: delta polling — only rows added since your cursor, ascending; next_cursor is always returned (empty items = caught up, keep the cursor and poll later). A cursor only works with the sort mode that issued it."
        +}
      • addedOutput schema / properties / delisted
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / items / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / items / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / items / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / items / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
      • addedOutput schema / properties / renamed_to
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / ticker_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedalphai_tickers1 field changed
      • addedOutput schema / properties / items / items / properties / next_report_date
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedalphai_trending6 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Stories; capped at 10 Basic / 50 Pro."New value: +"Stories; capped at 20 Free/Basic, 50 Pro."
      • addedOutput schema / properties / result / items / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / items / properties / earnings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / result / items / properties / insider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Structured SEC Form 4 event block (``alphai_insider_news`` items only).\n\nAggregate of the news row's whole transaction group — same semantics as the\nREST ``/api/news/insider/`` block (openapi.yaml: ``InsiderEvent``): shares and\nvalue are GROUP sums (a 10b5-1 ladder is one event), ``avg_price_usd`` is\nvalue-weighted over priced tranches, ``is_10b5_1`` is the group OR, the\nlast fill dates the event. ``side`` is the signal label: buy (P) / sell (S)\n/ other (everything else, incl. D — sale to issuer, a buyback/redemption,\nnot an open-market disposition); the raw ``transaction_code`` rides along.\nMoney/share fields are decimal STRINGS (\"25000\", \"187.32\") — flat, precise,\nschema-simple; null when the filing prices no tranche.\n\n``filed_at`` is when EDGAR accepted the filing and ``late_filing`` marks the\nones that missed the SEC's two-business-day deadline; the rule lives in\n``_is_late_filing`` in ``repository.py`` (ported from the backend's\n``apps.insider.services.filing_lateness``). Field reference for both\nsurfaces: ``backend/openapi.yaml`` (``InsiderEvent``).",
        +      "properties": {
        +        "avg_price_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "filed_at": {
        +          "type": "string"
        +        },
        +        "insider_name": {
        +          "type": "string"
        +        },
        +        "insider_title": {
        +          "type": "string"
        +        },
        +        "is_10b5_1": {
        +          "type": "boolean"
        +        },
        +        "is_director": {
        +          "type": "boolean"
        +        },
        +        "is_officer": {
        +          "type": "boolean"
        +        },
        +        "is_ten_percent_owner": {
        +          "type": "boolean"
        +        },
        +        "late_filing": {
        +          "type": "boolean"
        +        },
        +        "shares": {
        +          "type": "string"
        +        },
        +        "side": {
        +          "type": "string"
        +        },
        +        "total_value_usd": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "transaction_code": {
        +          "type": "string"
        +        },
        +        "transaction_date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "side",
        +        "transaction_code",
        +        "shares",
        +        "is_10b5_1",
        +        "insider_name",
        +        "insider_title",
        +        "is_officer",
        +        "is_director",
        +        "is_ten_percent_owner",
        +        "transaction_date",
        +        "filed_at",
        +        "late_filing"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / result / items / properties / source_type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / items / required
        Previous value: -[
        -  "uid",
        -  "title",
        -  "url",
        -  "source",
        -  "source_domain",
        -  "summary",
        -  "category",
        -  "relevance_score",
        -  "time_published"
        -]New value: +[
        +  "uid",
        +  "title",
        +  "url",
        +  "source",
        +  "source_domain",
        +  "summary",
        +  "category",
        +  "relevance_score",
        +  "time_published",
        +  "created_at"
        +]
  2. 5 tool updates
    • Changedalphai_actionable_now1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Stories. 10 Basic / 50 Pro (tools.bulk)."New value: +"Stories; capped at 10 Basic / 50 Pro."
    • Changedalphai_insider_news2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 50,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Alias for page_size."
        +}
      • changedInput schema / properties / page_size / description
        Previous value: -"Items/page. 10 Basic / 50 Pro (tools.bulk)."New value: +"Items/page; capped at 10 Basic / 50 Pro."
    • Changedalphai_news_search4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 50,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Alias for page_size."
        +}
      • changedInput schema / properties / page_size / description
        Previous value: -"Items/page. 10 Basic / 50 Pro (tools.bulk)."New value: +"Items/page; capped at 10 Basic / 50 Pro."
      • addedInput schema / properties / q
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Alias for query."
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Free-text query (company names / tickers / topic words) resolved to ticker + category filters."
        +}
    • Changedalphai_ticker_news2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 50,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Alias for page_size."
        +}
      • changedInput schema / properties / page_size / description
        Previous value: -"Items/page. 10 Basic / 50 Pro (tools.bulk)."New value: +"Items/page; capped at 10 Basic / 50 Pro."
    • Changedalphai_trending1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Stories. 10 Basic / 50 Pro (tools.bulk)."New value: +"Stories; capped at 10 Basic / 50 Pro."
  3. 1 tool update
    • Changedalphai_pair_analysis1 field changed
      • changedOutput schema / description
        Previous value: -"Read-across between two tickers: news naming BOTH (where the cross-ticker\nsignal lives), plus each ticker's own recent news for context."New value: +"Read-across between two tickers: news naming BOTH (where the cross-ticker\nsignal lives), plus each ticker's own recent news for context.\n\n``both`` items carry the full analysis (the read-across). ``a_recent`` /\n``b_recent`` are condensed — identity + summary + the scalar trading signals\n(actionability / novelty / sentiment), with the prose analysis dropped; fetch\n``alphai_article(uid)`` for the full write-up of a recent item."
  4. 1 tool update
    • Changedalphai_ticker_news1 field changed
      • changedInput schema / properties / include_insider / description
        Previous value: -"Include insider/13F ownership news; default true."New value: +"Include SEC Form 4 insider news; default true."
  5. 2 tool updates
    • Addedfetch
    • Addedsearch
  6. 1 tool update
    • Changedalphai_news_search1 field changed
      • removedInput schema / properties / q
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Free-text query; tokens AND-matched in title/summary."
        -}
  7. 11 tool updates
    • First observedalphai_actionable_now
    • First observedalphai_alerts_list
    • First observedalphai_alerts_subscribe
    • First observedalphai_alerts_unsubscribe
    • First observedalphai_article
    • First observedalphai_insider_news
    • First observedalphai_news_search
    • First observedalphai_pair_analysis
    • First observedalphai_ticker_news
    • First observedalphai_tickers
    • First observedalphai_trending

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Read-only, source-linked news intelligence for AI agents: search The Neural Ledger's stories, retrieve story details with citations and revision history, and resolve related entities and assets. It is an evidence layer, not a trading or execution service.
    8
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Connect AI agents to real-time financial news covering global markets, geopolitics, and company-level events. Search and filter articles by ticker, source, country, and language; every article includes sentiment scores and tagged company entities with tickers and ISINs. Remote server with standard OAuth 2.0, works out of the box with Claude, ChatGPT, Cursor, and any MCP client. Free tier available
    3
    78
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides derived financial intelligence for AI agents, including insider activity analysis, earnings surprises, institutional moves, stock screening with a proprietary composite value score, and macro indicators.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation3/5

Multiple news feed tools (alphai_actionable_now, alphai_trending, alphai_macro, alphai_ticker_news, alphai_news_search, alphai_insider_news, and search) overlap in purpose, so an agent could pick the wrong one by name alone. The detailed descriptions clarify each tool's window, scope, and filtering, but the set still relies heavily on reading those descriptions to avoid misselection.

Naming Consistency3/5

Most tools share the alphai_ prefix and snake_case, but there is no consistent verb_noun pattern: alphai_alerts_subscribe and alphai_news_search are verb phrases while alphai_ticker_news, alphai_macro, and alphai_calendar are noun phrases. The un-prefixed connector tools search and fetch add a further deviation, making the naming readable but mixed.

Tool Count3/5

At 16 tools, the set is at the heavy end and includes several near-duplicates: alphai_news_search vs search, alphai_article vs fetch, and alphai_insider_news vs alphai_news_search(category='insider'). The domain is broad enough to justify many specialized feeds, but the redundancies make it feel padded.

Completeness4/5

The toolset covers news discovery, search, article retrieval, alerts lifecycle, macro calendar, earnings reads, ticker metadata, and pair comparisons, so agents can complete most workflows. Minor gaps remain, such as no story-level detail endpoint and no broader user-account or watchlist management beyond alerts.