# io.github.Zhao73/alphacouncil-agent (npm · alphacouncil-agent)

Simulated investment committee: 27 investor lenses read the same filings, debate, and a PM decides.

- Trust score: 60/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `alphacouncil-agent`: 60/100 (this document), [markdown](https://verifymcp.io/servers/zhao73-alphacouncil-agent/alphacouncil-agent.md), [page](https://verifymcp.io/servers/zhao73-alphacouncil-agent/alphacouncil-agent)

## Channel facts

- Registry: `npm`
- Package: `alphacouncil-agent`
- Version: `1.0.15`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 3 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 35/100
  - AI-judged instruction clarity (fair).
  - Context-footprint check failed: tool/resource definitions use about 5907 tokens (~190/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 72% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add zhao73-alphacouncil-agent -- npx -y alphacouncil-agent
```

### Codex

```bash
codex mcp add zhao73-alphacouncil-agent -- npx -y alphacouncil-agent
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "zhao73-alphacouncil-agent": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "alphacouncil-agent"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add zhao73-alphacouncil-agent --command npx --arg -y --arg alphacouncil-agent
```

### Hermes

```yaml
mcp_servers:
  zhao73-alphacouncil-agent:
    command: "npx"
    args: ["-y", "alphacouncil-agent"]
```

### Other

```json
{
  "mcpServers": {
    "zhao73-alphacouncil-agent": {
      "command": "npx",
      "args": [
        "-y",
        "alphacouncil-agent"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 60, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 45, +16)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 29)

First indexed and scored.

## MCP tools (31)

### `begin_council_selection` (~351 tokens)

MANDATORY first step for every council run. Creates a short-lived selection session and returns every enabled master with a stable number, identity, method, best-for description and maturity. It does not create a research run, fetch data or launch workers. Show this catalog to the user even when their request already names masters; named masters may be preselected but must still be submitted for this run.

Input parameters:

- `council_mode` (string): full runs the eight-role evidence fan-out and three-round cross-exam. quick runs the fixed news-inclusive four-role preset, up to four masters, one parallel bull/bear round, a short PM, and a hard gl…
- `council_pace` (string): Prefill only, when the request already named a speed such as fast or slow. It highlights that tier in the returned pace_options and never confirms one. Full only.
- `host` (string): Calling host, e.g. codex, claude-code, opencode or grok-build.
- `language` (string): Reader-facing language for subagents and final report, e.g. auto, zh-CN, en-US, ja-JP. Auto infers from prompt.
- `preselected_master_ids` (array): Optional stable IDs inferred from masters explicitly named in the request. They are highlighted only; the user must still submit this run's selection.
- `prompt` (string): User objective or extra instructions.
- `symbol` (string, required): Exchange ticker. US, HK, JP, KR, CN and TW symbols all work, e.g. AAPL, 0700.HK, 7203.T, 005930.KS, 600519.SS.

### `confirm_master_selection` (~219 tokens)

Confirm the user's one-run master choice after the catalog was displayed. Choose exactly one input form: a non-empty array of stable IDs, select_all=true, or a text selection such as '1,4-6', 'master_buffett', or 'all'. Returns a one-time selection_receipt required by every council execution tool.

Input parameters:

- `catalog_hash` (string, required): The catalog_hash returned by begin_council_selection.
- `council_pace` (string): The depth tier the user picked from the pace_options this selection returned. Full only; omit to accept the default (normal, ~20 min expected, 30 min ceiling). Binds into the receipt, so an execution…
- `display_ack` (boolean, required): Must be true after the host displayed the catalog to the user.
- `select_all` (boolean)
- `selected_master_ids` (array)
- `selection` (string): Text fallback: stable numbers/ranges/IDs, or all.
- `selection_id` (string, required)

### `plan_visible_run` (~454 tokens)

Create the visible-host-thread AlphaCouncil run after a confirmed master selection. Requires a one-time selection_receipt. Does NOT execute. Run every returned evidence_agent, then every returned master_agent. Physical v3 master agents explain a frozen deterministic stance and may not change it. Record all required bull/bear rounds before the portfolio_manager decision; PM rejects any returned master_agent that was not recorded.

Input parameters:

- `as_of` (string): Analysis date YYYY-MM-DD. Defaults to today.
- `council_mode` (string): full runs the eight-role evidence fan-out and three-round cross-exam. quick runs the fixed news-inclusive four-role preset, up to four masters, one parallel bull/bear round, a short PM, and a hard gl…
- `grounding` (object): The `grounding` object from compose_research_brief. Injected into every analyst prompt.
- `language` (string): Reader-facing language for subagents and final report, e.g. auto, zh-CN, en-US, ja-JP. Auto infers from prompt.
- `prompt` (string): User objective or extra instructions.
- `run_id` (string)
- `seat_weights` (object): Override the declared weight of any seat, e.g. {"master_buffett": 2, "master_soros": 0}. Weights are an editable prior, not an optimum: a return backtest of LLM judgment would be invalidated by look-…
- `selection_receipt` (string, required): One-run receipt returned by confirm_master_selection. Required for every council run and consumed exactly once.
- `symbol` (string, required): Exchange ticker. US, HK, JP, KR, CN and TW symbols all work, e.g. AAPL, 0700.HK, 7203.T, 005930.KS, 600519.SS.
- `tasks` (array)
- `total_timeout_ms` (number): Hard queue-to-persistence wall-clock budget. Cannot exceed the selected council_pace's total (fast 900000, normal 1800000, slow 3600000) or ten minutes for quick. Callers may lower the applicable cei…

### `record_visible_packet` (~102 tokens)

MANDATORY sequential step (not optional): record one completed visible evidence agent packet into a planned visible run. Every reader-facing field must use the run language or the packet is rejected without changing run state. Every planned evidence task MUST be recorded before debate completion and portfolio_manager.

Input parameters:

- `packet` (object, required)
- `run_id` (string, required)
- `task` (string, required)
- `thread_id` (string)
- `thread_title` (string)

### `record_visible_decision` (~220 tokens)

Record exactly one visible decision step. Full visible bull_researcher and bear_researcher calls MUST supply round=1, then round=2, then round=3; both sides of the prior round are required before advancing. Round 2 asks exactly three questions; Round 3 preserves its own questions and answers the opponent's questions with exact bindings. Packets are persisted by role+round: an identical replay is idempotent and conflicting content is rejected. portfolio_manager accepts no round and is rejected until all evidence, selected masters, both three-round sides, and the exact Q&A gate are complete. Every reader-facing field must use the run language.

Input parameters:

- `packet` (object, required)
- `role` (string, required)
- `round` (integer): Required for bull_researcher and bear_researcher. Full visible runs require 1, 2, and 3 in order. Omit for portfolio_manager.
- `run_id` (string, required)
- `thread_id` (string)
- `thread_title` (string)

### `collect_evidence` (~571 tokens)

Launch Codex subagents and save shared JSON evidence packets. Use dry_run=true only for planning/self-tests.

Input parameters:

- `as_of` (string): Analysis date YYYY-MM-DD. Defaults to today.
- `council_mode` (string): full runs the eight-role evidence fan-out and three-round cross-exam. quick runs the fixed news-inclusive four-role preset, up to four masters, one parallel bull/bear round, a short PM, and a hard gl…
- `council_pace` (string): Full-council depth/time tier. fast = 15 minutes, normal = 30, slow = 60. The tier sets the total budget AND every per-stage cap together: slow gives each evidence seat 12 minutes instead of 6 and eac…
- `dry_run` (boolean): Default false. Set true only for planning/self-tests without launching Codex subagents.
- `language` (string): Reader-facing language for subagents and final report, e.g. auto, zh-CN, en-US, ja-JP. Auto infers from prompt.
- `max_concurrency` (number)
- `output_mode` (string): Final synthesis target shape.
- `prompt` (string): User objective or extra instructions.
- `seat_weights` (object): Override the declared weight of any seat, e.g. {"master_buffett": 2, "master_soros": 0}. Weights are an editable prior, not an optimum: a return backtest of LLM judgment would be invalidated by look-…
- `selection_receipt` (string, required): One-run receipt returned by confirm_master_selection. Required for every council run and consumed exactly once.
- `symbol` (string, required): Exchange ticker. US, HK, JP, KR, CN and TW symbols all work, e.g. AAPL, 0700.HK, 7203.T, 005930.KS, 600519.SS.
- `synthesis` (boolean): Run bull, bear, and portfolio-manager synthesis after evidence collection.
- `synthesis_timeout_ms` (number)
- `tasks` (array)
- `timeout_ms` (number)
- `total_timeout_ms` (number): Hard queue-to-persistence wall-clock budget. Cannot exceed the selected council_pace's total (fast 900000, normal 1800000, slow 3600000) or ten minutes for quick. Callers may lower the applicable cei…
- `visibility_required` (boolean): When true, headless MCP execution is rejected; use host-visible agents/threads and record their outputs.

### `analyze_symbol` (~668 tokens)

Research an operating company, ETF, mutual fund or market index and write a manager-style decision summary. The instrument is classified before evidence routing: funds use holdings look-through, indices use aggregate methodology, and Company Facts screens apply only to operating companies. Set council_mode=quick for the bounded news-inclusive quick_v1 path; the default remains the full council.

Input parameters:

- `as_of` (string): Analysis date YYYY-MM-DD. Defaults to today.
- `council_mode` (string): full runs the eight-role evidence fan-out and three-round cross-exam. quick runs the fixed news-inclusive four-role preset, up to four masters, one parallel bull/bear round, a short PM, and a hard gl…
- `council_pace` (string): Full-council depth/time tier. fast = 15 minutes, normal = 30, slow = 60. The tier sets the total budget AND every per-stage cap together: slow gives each evidence seat 12 minutes instead of 6 and eac…
- `dry_run` (boolean): Default false. Set true only for planning/self-tests without launching Codex subagents.
- `language` (string): Reader-facing language for subagents and final report, e.g. auto, zh-CN, en-US, ja-JP. Auto infers from prompt.
- `max_concurrency` (number)
- `output_mode` (string): Final synthesis target shape.
- `prompt` (string): User objective or extra instructions.
- `seat_weights` (object): Override the declared weight of any seat, e.g. {"master_buffett": 2, "master_soros": 0}. Weights are an editable prior, not an optimum: a return backtest of LLM judgment would be invalidated by look-…
- `selection_receipt` (string, required): One-run receipt returned by confirm_master_selection. Required for every council run and consumed exactly once.
- `symbol` (string, required): Exchange ticker. US, HK, JP, KR, CN and TW symbols all work, e.g. AAPL, 0700.HK, 7203.T, 005930.KS, 600519.SS.
- `synthesis` (boolean): Run bull, bear, and portfolio-manager synthesis after evidence collection.
- `synthesis_timeout_ms` (number)
- `tasks` (array)
- `timeout_ms` (number)
- `total_timeout_ms` (number): Hard queue-to-persistence wall-clock budget. Cannot exceed the selected council_pace's total (fast 900000, normal 1800000, slow 3600000) or ten minutes for quick. Callers may lower the applicable cei…
- `visibility_required` (boolean): When true, headless MCP execution is rejected; use host-visible agents/threads and record their outputs.
- `wait_for_completion` (boolean): Default false for real runs: return a run_id immediately and poll read_run. Set true only when the MCP client can remain connected for the entire council. Dry runs remain synchronous when this field…

### `read_run` (~29 tokens)

Read a saved AlphaCouncil Agent run from the shared evidence store.

Input parameters:

- `run_id` (string, required)

### `council_diagnostics` (~117 tokens)

Measure descriptive seat agreement, unique cited-source contribution and repeated-input behavioural differentiation across saved runs. This tool never treats seat count or agreement as independent evidence: error N_eff remains null unless the separate preregistered signed resolved-outcome protocol is satisfied.

Input parameters:

- `minimum_cases` (integer): Minimum distinct hash-identical cases, each with at least two repetitions, before a behavioural-differentiation verdict is emitted.
- `run_ids` (array, required): Saved run IDs. Repeated-input claims require hash-identical facts, selection and pack policies.

### `compare_summary_modes` (~67 tokens)

Compare chat, PDF, presentation, document, and specialist plugin modes for final AlphaCouncil Agent synthesis.

Input parameters:

- `language` (string): Reader-facing language for subagents and final report, e.g. auto, zh-CN, en-US, ja-JP. Auto infers from prompt.

### `record_master_opinion` (~200 tokens)

Record one returned visible method-seat worker after evidence and before debate. For physical v3 seats, submit the method-voice schema from plan_visible_run: master, acknowledged_stance, statement, key_findings, disagreements, what_would_change_my_mind, source_ids and confidence. acknowledged_stance must equal the frozen stance; the worker cannot vote again. Legacy packets may use stance/verdict/summary. Reader-facing fields in the wrong run language are rejected without changing state. Every returned selected seat must be recorded before PM.

Input parameters:

- `master` (string, required)
- `packet` (object, required): Current physical v3 seats use acknowledged_stance + statement; acknowledged_stance MUST be one of constructive | cautious | opposed | out_of_scope and match the frozen stance returned by plan_visible…
- `run_id` (string, required)
- `thread_id` (string)

### `get_macro_snapshot` (~113 tokens)

Keyless DELAYED top-down macro context in one call: rate curve, dollar and credit, commodities, risk appetite and breadth, and cross-market indices, plus derived pairs (10Y-3M spread, copper/gold, HY/IG, equal-weight vs cap-weight). Use it to place a single name inside its macro environment. These are observations, not a regime call, and unavailable series are data gaps for open_questions.

Input parameters:

- `blocks` (array): Subset of macro blocks. Defaults to all.

### `list_council_options` (~79 tokens)

Browse the current analysts, presets, master catalog, rosters and verifiers without opening a selection session. This is informational only and cannot authorize a run. Every council run must still call begin_council_selection, display that frozen catalog, and confirm_master_selection.

Input parameters:

- `language` (string): Language for the labels. Defaults to English.

### `get_options_chain` (~175 tokens)

Keyless DELAYED options chain digest from CBOE for one US-listed symbol: ATM implied-volatility term structure, 25-delta skew, put/call ratios on open interest and volume, the strikes holding the most open interest, and the ATM bid-ask spread as a share of mid. Contracts reporting iv = 0 (expired or deep in the money) are excluded rather than read as zero volatility. This is a snapshot with no history, so IV percentile or rank CANNOT be computed from it and must stay an open question. Non-US listings are generally absent and are reported as unavailable, never guessed.

Input parameters:

- `as_of` (string): ISO date used to compute days-to-expiry. Defaults to today.
- `symbol` (string, required): US-listed underlying, e.g. MU or BRK.B.

### `get_market_narrative` (~230 tokens)

What story the market is currently telling itself, read from keyless news feeds (Federal Reserve, SEC, WSJ, CNBC, Yahoo) and cross-checked against the macro tape. Returns ranked themes with their share of coverage, dated and linked sample headlines, and for each theme the actual market series that would corroborate it. Headline counts measure ATTENTION, never truth: where a theme leads coverage and its series has not moved, that divergence is the finding. Every item must carry a timestamp inside the window or it is reported as excluded. Themes come from a fixed lexicon, so a genuinely new narrative lands in unclassified_headlines rather than being discovered, and the output says so.

Input parameters:

- `as_of` (string): ISO date treated as now. Defaults to today.
- `days` (number): Recency window in days. Defaults to 7.
- `extra_queries` (array): Up to 4 extra Google News queries to fold in, e.g. a sector or a country.
- `top` (number): How many themes to return. Defaults to 6.

### `get_news` (~200 tokens)

Dated headlines for one symbol, one search query, or one company's SEC filings, from keyless feeds (Yahoo Finance RSS, Google News RSS, EDGAR Atom). Every item must carry a parsable timestamp inside the window; undated and out-of-window items are counted and sampled under excluded_outside_window rather than being shown as recent. Filings are the one source here that cannot be spun, so prefer them for anything material.

Input parameters:

- `as_of` (string): ISO date treated as now. Defaults to today.
- `cik` (string): SEC CIK for the filings feed.
- `days` (number): Recency window in days. Defaults to 14.
- `forms` (string): Filing type for the CIK feed. Defaults to 8-K.
- `query` (string): Free-text Google News query, e.g. 'HBM supply Samsung'.
- `symbol` (string): Ticker for the Yahoo per-name feed.

### `get_social_pulse` (~227 tokens)

Keyless retail and technical-community discussion for a name or theme, from Reddit (searched inside the equity subreddits, not site-wide), Hacker News, and any Bluesky handles supplied. IMPORTANT: X / Twitter has NO free discovery channel -- Nitter search is dead, the X API bills per post and xAI bills per call -- so this does NOT cover professional FinTwit, and Reddit is not a substitute for it. Mention volume measures attention, never correctness. Nothing here may enter a conclusion alone; it is a lead to be confirmed against a filing or recorded in open_questions.

Input parameters:

- `as_of` (string): ISO date treated as now.
- `days` (number): Recency window in days. Defaults to 7.
- `handles` (array): Bluesky handles to read. Search needs auth; reading a named account does not.
- `query` (string): Company name or theme to search for.
- `subreddits` (array): Override the default equity subreddits.
- `symbol` (string): Used as the query when query is absent.

### `verify_x_post` (~90 tokens)

Confirm that one X post id exists and read back its text, author and date. Use it whenever a report or search result quotes a post: a decoded snowflake timestamp proves nothing, because any invented 19-digit id decodes to a plausible date, so existence has to be checked separately. This is verification only and cannot search or discover posts.

Input parameters:

- `id` (string, required): Numeric X post id.

### `record_verifier_verdict` (~146 tokens)

Record one Stage 2b verifier outcome against the seat that cited the claim. Verdicts that failed verification (contradicted, disagree, refuted) automatically reduce that seat's weight in the portfolio-manager synthesis; cannot_confirm and source_unreachable reduce it less. A seat is down-weighted, never silently erased.

Input parameters:

- `claim` (string)
- `note` (string)
- `run_id` (string, required)
- `seat` (string, required): The seat whose claim was checked, e.g. bull_researcher or master_buffett.
- `verdict` (string, required): Must be one of the verifier's declared verdict_values.
- `verifier` (string, required)

### `industry_brief` (~126 tokens)

Start from an industry rather than a ticker. Returns the participant list by position in the value chain -- INCLUDING the non-US names a SEC-only pipeline would silently drop, such as Korean and Japanese makers -- plus who actually drives demand, the questions a run must answer, how the industry behaves through a cycle, and which participants this pipeline can screen mechanically versus which need their own regulator's feed. Returns a frame, never a verdict.

Input parameters:

- `industry` (string, required): Free text; ids and aliases in both languages, e.g. memory, 存储, HBM, DRAM.

### `market_financials` (~189 tokens)

Structured financials for ANY market, degrading in a stated order: keyless regulator feed (SEC for US, TWSE for Taiwan), then a feed needing a free key (DART for Korea, EDINET for Japan) reported as not-configured rather than pretended away, then quotes plus search which always work. Never returns an empty result silently -- it says which feed is missing, why, and what to use instead.

Input parameters:

- `corp_code` (string): Korea only: DART's 8-digit corp_code, which is not the ticker. Samsung Electronics is 00126380, SK hynix 00164779.
- `symbol` (string, required): Exchange symbol, e.g. 2408.TW, 000660.KS, 285A.T, 0700.HK.
- `year` (number): Korea only: fiscal year. Defaults to last year.

### `market_coverage` (~88 tokens)

Ask up front what this pipeline can and cannot fetch for a set of symbols, before building a report on them. Returns per-symbol whether structured financials are available, summary-only, or absent, and which environment variable would unlock a market. Names without a feed are still researchable from documents -- but every figure taken that way has to be labelled as such.

Input parameters:

- `symbols` (array, required)

### `compose_research_brief` (~270 tokens)

Classify the instrument and assemble hard facts BEFORE analysts search. Operating companies may receive SEC Company Facts or local-market financials; ETFs and funds receive a holdings look-through contract; indices receive an aggregate-index contract. The result also carries quote, applicable filer profile, options/macro/industry context, explicit not-applicable routes, typed facts, and a prompt block. A searched number never silently overwrites a filed one. Pass the returned `grounding` object to plan_visible_run so every analyst prompt carries it.

Input parameters:

- `as_of` (string): YYYY-MM-DD; only filings filed by this date are used.
- `cik` (string): SEC CIK; enables the filer profile and the mechanical screen.
- `industry` (string): Industry query; adds the value-chain participants including non-US names.
- `language` (string): Reader-facing language for subagents and final report, e.g. auto, zh-CN, en-US, ja-JP. Auto infers from prompt.
- `macro` (boolean)
- `symbol` (string): Exchange ticker. US, HK, JP, KR, CN and TW symbols all work, e.g. AAPL, 0700.HK, 7203.T, 005930.KS, 600519.SS.

### `industry_coverage` (~97 tokens)

Ask what is actually known about an industry BEFORE researching it. Returns whether a curated value-chain map exists, whether SEC's SIC classification covers it, or neither -- with guidance for each case. SIC reaches every industry with a US filer; a curated map additionally carries chain position, non-US participants and demand drivers. Use this so a report never presents an uncurated participant list as if it were complete.

Input parameters:

- `industry` (string, required)

### `industry_peers` (~113 tokens)

Find US filers related to a company using SEC's own SIC classification -- no curation and no model. Covers every industry with a US filer, including ones no curated map reaches. It gives no value-chain position and no non-US participants: for those prefer industry_brief where a map exists. Peer matching is by company name and is a starting universe, not an index membership list.

Input parameters:

- `cik` (string, required): Anchor company CIK. Resolve one with list_us_universe.
- `limit` (number)

### `list_industries` (~45 tokens)

The industries that have a hand-maintained map. Deliberately a short list: an unmapped industry should be handled by research rather than by inventing a participant list.

### `screen_ticker` (~210 tokens)

Run the mechanical elimination screen against an operating company's own SEC filings. It is not applicable to ETFs, funds or indices; use compose_research_brief so those instruments are classified and routed correctly. No language model is involved: seven hard rules (10y ROE, 5y cumulative FCF, interest cover, gross margin, OCF/NI, net margin, dilution) with three exemptions, and every rejection names the metric, value and threshold. Missing rules are skipped, never passes. Surviving is not a recommendation. US operating-company filers only.

Input parameters:

- `as_of` (string): YYYY-MM-DD. Only filings actually filed by this date are used, which is what keeps a historical screen free of look-ahead bias.
- `cik` (string): SEC CIK. Use list_us_universe to resolve a ticker.
- `ticker` (string): US ticker, e.g. MU. Resolved to a CIK against the SEC universe, so supplying this is enough.

### `screen_candidates` (~144 tokens)

Run the mechanical elimination screen over a list of candidates and report every rejection with the metric, the measured value and the threshold. This is the 'find me stocks' path, and no language model participates in it. Capped at 40 names: SEC is one request per company and rate-limits, so narrow the funnel first with industry_brief, industry_peers or list_us_universe. A fetch failure is reported as unavailable rather than eliminated, because dropping a name because SEC timed out would bias the survivors.

Input parameters:

- `as_of` (string): YYYY-MM-DD. Only filings filed by this date are used.
- `candidates` (array, required): Up to 40 companies.

### `list_us_universe` (~77 tokens)

The full SEC list of US listed companies (~10k) as {cik, ticker, title}. Keyless. Use it to resolve a ticker to a CIK, or as the starting universe for a screen.

Input parameters:

- `contains` (string): Case-insensitive filter on ticker or company name.
- `limit` (number)

### `preflight_permissions` (~92 tokens)

MANDATORY before a visible run: check that the host actually grants the network tools the evidence agents need. Background subagents cannot raise an interactive permission prompt, so a missing allowlist entry blocks their searches SILENTLY and they answer from training knowledge while still filling in every report section. Returns status ok | blocked | unknown with a remedy.

Input parameters:

- `roster` (string): Which analyst roster the run will use.

### `get_quote` (~168 tokens)

Keyless DELAYED market data (Yahoo/Stooq, ~15m or EOD) for indices, index futures (incl. night session), FX, rates, vol, commodities, and stocks. Accepts plain names ('KOSPI','纳指期货','VIX','美元指数','10年美债','黄金') or raw tickers (^KS11, ES=F, 7203.T). Use for real index/futures/macro numbers; on error treat as a data gap (open_questions). Not real-time, not investment advice.

Input parameters:

- `symbol` (string): Single name/ticker (alternative to symbols[]).
- `symbols` (array): Names or tickers, e.g. ['KOSPI','ES=F','VIX','美元指数'].

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/zhao73-alphacouncil-agent/alphacouncil-agent#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 60
- 2026-08-01: 45
- 2026-07-31: 45
- 2026-07-30: 29

## Links

- npm package: https://www.npmjs.com/package/alphacouncil-agent
- Socket report: https://socket.dev/npm/package/alphacouncil-agent
- Repository: https://github.com/Zhao73/alphacouncil-agent
- Changelog RSS feed: https://verifymcp.io/servers/zhao73-alphacouncil-agent/alphacouncil-agent/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/zhao73-alphacouncil-agent/alphacouncil-agent/changelog.json
- HTML version of this page: https://verifymcp.io/servers/zhao73-alphacouncil-agent/alphacouncil-agent
