Skip to main content
Glama
pairbook-mcp

pairbook-mcp

Official
by pairbook-io

pairbook-mcp

npm license: MIT Listed on mcpservers.org

PairBook을 위한 MCP 서버 및 CLI입니다. PairBook은 4,700개 이상의 미국 주식과 ETF를 다루는 상관관계 및 ETF 중복 보유 엔진입니다. 가능한 1,130만 개의 쌍 중 어느 것이든 비교할 수 있습니다. 52,000개 이상의 인기 쌍은 발행사 제공 보유 종목 중복과 함께 미리 계산되어 제공되며, 그 외의 모든 조합은 주간 수익률 계열로부터 요청 시 계산됩니다. 기반 JSON API는 무료이고 정적이며 키가 필요 없고 미국 시장 마감 후 매 거래일마다 갱신됩니다.

AI 어시스턴트에게 "내 포트폴리오가 너무 집중되어 있나?", "QQQ와 VOO의 상관관계는 얼마나 되고, 보유 종목은 얼마나 겹치나요?" 또는 *"NVDA에 대한 분산 투자 대상을 찾아줘"*라고 물어보세요. 그러면 추측 대신 최신 출처가 명확한 수치로 답할 수 있습니다.

MCP 설정

Claude Code

claude mcp add pairbook -- npx -y pairbook-mcp

Cursor: Add to Cursor로 원클릭 설치

Claude Desktop: claude_desktop_config.json에 다음을 추가하세요:

{
  "mcpServers": {
    "pairbook": {
      "command": "npx",
      "args": ["-y", "pairbook-mcp"]
    }
  }
}

다른 MCP 클라이언트도 같은 방식으로 작동합니다: stdio를 통해 npx -y pairbook-mcp를 실행하세요.

Related MCP server: TickerAPI

도구

도구

답변 내용

analyze_portfolio

전체 포트폴리오(2~30개 포지션): 오일러 위험 기여도, 분산 비율 및 독립 위험 베팅, 상관관계 블록, SPY 대비 드로다운, 보유 펀드 간 ETF 중복 경고

compare_pair

두 자산의 상관관계(1/3/5년, 주간), 공분산, S&P 500 대비 베타, 변동성 및 보유 종목 중복

symbol_profile

한 자산: 베타, 변동성, 수익률, 가장 상관관계가 높은 자산

find_diversifiers

주어진 자산에 대해 가장 낮거나 가장 음(-)인 3년 상관관계

weekly_returns

맞춤 계산을 위한 주간 수익률 시계열(최대 156주)

resolve_symbol

대상 유니버스에서 "nvidia" → NVDA

포트폴리오 분석

전체 포트폴리오(2~30개 포지션, 가중치 선택 사항)를 입력하면 중복된 포지션, 위험이 집중된 곳, 실제로 분산 효과가 있는 종목, 그리고 보유한 ETF가 내부적으로 중복되는지 여부를 알려줍니다:

pairbook portfolio AAPL:25 MSFT:25 NVDA:20 JNJ:15 XOM:15
RISK
  volatility     16.7%  (weighted average of the parts: 29.0%)
  beta vs SPY    0.99    market explains 73% of the moves (R2)
  max drawdown   -17.4%  (2024-12-05 to 2025-04-03, SPY: -16.9%)

RISK BUDGET  (share of portfolio risk vs share of capital)
  NVDA   ############  43.1% risk     20% capital  beta 2.18  risk engine  <- 20% of the capital but 43% of the risk
  AAPL   ########      27.1% risk     25% capital  beta 1.06  diversifier
  ...

MCP 도구 analyze_portfolio는 동일한 분석을 구조화된 JSON으로 반환합니다: 오일러 위험 기여도, 분산 비율 및 독립 위험 베팅, 함께 움직이는 상관관계 블록, SPY 대비 드로다운, 그리고 보유 ETF 간 발행사 출처의 중복 경고(QQQ와 VOO가 동일한 주식의 53.5%를 보유하고 있다는 사실은 다른 어떤 포트폴리오 도구도 보고하지 않습니다). 모든 공식은 docs/methodology.md에 문서화되어 있고, 불변식은 테스트로 검증되며, 어떤 것도 예측이나 조언이 아닙니다.

CLI

설치 없이 미널에서 동일한 데이터를 확인할 수 있습니다:

npx -y -p pairbook-mcp pairbook QQQ VOO

또는 npm i -g pairbook-mcp 실행 후:

pairbook QQQ VOO         # compare two assets
pairbook NVDA            # one asset's profile
pairbook search nvidia   # find a ticker
pairbook AAPL MSFT --json

종료 코드: 성공 시 0, 오류 발생 시 1(오류는 stderr로 출력됩니다). --json은 stdout에 유효한 JSON 문서 하나를 출력하므로 pairbook qqq voo --json | jq .correlation_weekly가 그대로 작동합니다.

DGRO vs SCHD  (data as of 2026-08-27)
  correlation   1y 0.74   3y 0.88   5y 0.93
  beta vs SPY   DGRO 0.65   SCHD 0.52
  volatility    DGRO 11.4%   SCHD 12.9%
  overlap       20.8% across 32 common holdings (issuer files 2026-08-26)
  https://www.pairbook.io/pair/dgro-vs-schd/

범위

PairBook은 상관관계, 중복 및 분산 구족를 다루는 전문 도구입니다. 시세, 펀더멘털, 뉴스를 제공하는 일반적인 시장 데이터 MCP 서버와 잘 어울리므로 둘 다 설치하고 어시스턴트가 이들을 결합하게 하세요.

데이터

모든 것는 무료 PairBook API에서 제공됩니다: 주간 수익률(1/3/5년 기간)로 계산된 상관관계, 발행사 포트폴리오 공시의 중복, 매 거래일마다 재계산됩니다. 데이터셋트는 DOI와 함게 CSV 다운로드로도 공개됩니다.

출처 표시하면 무료입니다(pairbook.io로 다시 연걀되는 링크). 미구 상장 주식 및 ETF만 해당됩니다. 여기의 어든 내욘도 투자 조언이 아닙니다.

개인정보 보호

서버와 CLI는 전적으로 사용자 머신에서 실해되며 읽기 전용입니다. 공개 시장 데이터를 가져오기 위해 단일 호스트(www.pairbook.io)를 호출하며, user agent의 버전과 surface 문자열로 자신을 식별하고 그 외의 어떤 것도 보내지 않습니다: 프롬프트 없음, 대화 콘텐츠 없음, 개인 데이터 없음, 텔레메트리 없음. 전체 정책: pairbook.io/privacy.

라이선스

MIT © VoidLab

Available Tools

6 tools
analyze_portfolioAnalyze a portfolioA
Read-onlyIdempotent

Whole-portfolio risk and diversification analysis for 2 to 30 US stocks or ETFs: which positions are redundant, where the risk concentrates (Euler risk contributions), what actually diversifies, portfolio volatility, beta and market R2, diversification ratio, effective number of independent bets, correlation blocks that move together, max drawdown of the mix vs SPY, and issuer-sourced holdings-overlap warnings between the ETFs held. Use compare_pair for just two assets. Covers ~4,700 US-listed stocks and ETFs only (no crypto, no foreign listings, no inverse/leveraged short funds, no intraday data); figures use weekly closes and refresh once per trading day. Unknown tickers return an error: resolve them with resolve_symbol first.

NameRequiredDescriptionDefault
detailNoauto (default) includes the correlation matrix up to 12 positions; compact never includes it
positionsYesThe holdings. Example: [{symbol:'AAPL',weight:40},{symbol:'MSFT',weight:30},{symbol:'SCHD',weight:30}]

Output Schema

NameRequiredDescription
metaYes
flagsYes
notesYes
termsNo
clustersYes
drawdownYes
portfolioYes
positionsYes
redundant_pairsYes
correlation_matrixNo
etf_overlap_warningsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral context beyond those: weekly close frequency, once-per-trading-day refresh, no intraday data, coverage limits, holdings-overlap warnings, and error behavior for unknown tickers. It does not contradict 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 clause carries information: scope, outputs, alternatives, exclusions, data cadence, limitations, and error handling. The key purpose is front-loaded, and the alternative routing appears mid-description in a natural place. No filler or repetition of schema details is present.

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 complex analysis tool with an output schema and safety annotations, the description covers everything needed to invoke it correctly: input constraints, supported asset types, data freshness, excluded instruments, error behavior, and sibling routing. It is complete enough that an agent can select and call this tool without further inference.

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 schema already has 100% description coverage for positions and detail, so the baseline is 3. The description adds context beyond the schema by clarifying the asset universe, position count range, and ticker-resolution requirement, which helps the agent choose valid parameter values. It does not need to repeat schema-level normalization rules, so a 4 is warranted.

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 and resource: whole-portfolio risk and diversification analysis for 2 to 30 US stocks or ETFs. It enumerates concrete outputs (Euler risk contributions, diversification ratio, effective number of bets, correlation blocks) and immediately distinguishes itself from the compare_pair 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 explicitly says 'Use compare_pair for just two assets,' which is a direct alternative-routing instruction. It also gives exclusions (no crypto, no foreign listings, no inverse/leveraged funds) and tells the agent to resolve unknown tickers with resolve_symbol first, making when-to-use and when-not-to-use clear.

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

compare_pairCompare two assetsA
Read-onlyIdempotent

Correlation (weekly returns), annualized covariance, beta vs S&P 500, volatility, max drawdown, calendar-year returns, fund facts (fees, yield, AUM) or stock fundamentals (market cap, P/E), and ETF holdings overlap with top common positions, for a pair of US stocks or ETFs. Popular pairs come from PairBook's precomputed matrix; any other pair of covered symbols is computed on demand from the weekly return series. Example: a=QQQ, b=VOO. Symbol order does not matter. Covers ~4,700 US-listed stocks and ETFs only (no crypto, no foreign listings, no inverse/leveraged short funds, no intraday data); figures use weekly closes and refresh once per trading day. Unknown tickers return an error: resolve them with resolve_symbol first.

NameRequiredDescriptionDefault
aYesFirst ticker, e.g. AAPL or SPY
bYesSecond ticker, e.g. MSFT or VOO

Output Schema

NameRequiredDescription
aYes
bYes
docsNo
fundNo
noteNo
pageNo
as_ofYes
termsNo
fundamentalsNo
beta_vs_spy_3yNo
holdings_overlapNo
computed_on_demandNo
correlation_weeklyYes
max_drawdown_3y_pctNo
volatility_ann_pct_3yNo
covariance_ann_pct2_3yNo
calendar_year_returns_pctNo

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint/idempotentHint/destructiveHint annotations, the description reveals important behaviors: popular pairs are served from a precomputed matrix, any other pair is computed on demand from weekly returns, data refreshes once per trading day, and unknown tickers produce an error. These are precisely the behavioral traits an agent needs to set expectations.

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 earns its place: output list, coverage universe, computation mode, example, commutativity, limitations, refresh cadence, and error handling. The most important purpose is front-loaded, and details are logically organized rather than padded.

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 pairwise comparison tool with an output schema and safety annotations, this description is complete: it defines the symbol universe, data frequency, computation path, return value caveats, and failure mode. An agent can determine correct usage and expected behavior without needing supplemental information.

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 schema already documents both parameters at 100% coverage, so the baseline is 3. The description adds material value by explicitly stating 'Symbol order does not matter' and providing a concrete example (a=QQQ, b=VOO), which removes a likely ambiguity about whether parameter order is significant.

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 specifies the verb 'Compare' with a resource ('a pair of US stocks or ETFs') and enumerates the exact outputs computed, from correlation and beta to holdings overlap. This clearly differentiates it from siblings like symbol_profile and analyze_portfolio, which are single-asset or multi-asset portfolio tools.

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 gives strong usage context: it covers US-listed equities/ETFs only, excludes crypto, foreign listings, inverse/leveraged funds, and intraday data, and explicitly instructs agents to call resolve_symbol first for unknown tickers. It stops short of naming sibling alternatives such as find_diversifiers or analyze_portfolio for when a single comparison is not the right fit.

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

find_diversifiersFind diversifiersA
Read-onlyIdempotent

Assets with the lowest or most negative 3-year correlation to the given US stock or ETF, each with its name and kind so you can screen them. Raw lowest-correlation list: it can contain leveraged/inverse ETNs, volatility products and illiquid micro-caps. Check name and kind before presenting anything as a portfolio diversifier. Covers ~4,700 US-listed stocks and ETFs only (no crypto, no foreign listings, no inverse/leveraged short funds, no intraday data); figures use weekly closes and refresh once per trading day. Unknown tickers return an error: resolve them with resolve_symbol first.

NameRequiredDescriptionDefault
symbolYesTicker to diversify away from, e.g. QQQ

Output Schema

NameRequiredDescription
docsNo
nameNo
pageNo
as_ofYes
termsNo
symbolYes
cautionNo
diversifiers_3yNo

TDQS

A4.7/5.0
Behavior5/5

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

Although annotations already mark this as read-only and idempotent, the description adds substantial behavioral context: the raw list may contain leveraged/inverse ETNs, volatility products, and illiquid micro-caps, so name and kind must be checked before presenting results. It also discloses weekly-close data, once-per-day refresh, and error behavior for unknown tickers. 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.

Conciseness5/5

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

The description is dense but every clause earns its place: purpose, output elements, caveats, coverage scope, data frequency, and error handling. The key purpose is front-loaded, and the warnings are packed into a compact but readable warning block. Nothing is redundant with the schema or 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 one-parameter read-only tool with an output schema, the description covers all essential operational knowledge: coverage universe, refresh cadence, error behavior, and important content warnings. An agent has enough information to invoke it correctly and to interpret results safely.

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% and the single parameter has a clear description ('Ticker to diversify away from, e.g. QQQ'). The tool description adds extra meaning by specifying that the ticker must be a US stock or ETF and that unknown tickers error out. This is valuable enrichment beyond the schema field.

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: it finds assets with the lowest or most negative 3-year correlation to a given US stock or ETF. It also mentions the output includes name and kind, making the tool's function and scope clear. This distinguishes it from siblings like symbol_profile or compare_pair.

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 gives clear context for when the tool is appropriate: US-listed stocks and ETFs only, no crypto, no foreign listings, no intraday data. It also tells the agent to resolve unknown tickers via resolve_symbol first, which is direct cross-tool guidance. It does not explicitly name alternative siblings for related tasks, but the conditions are strong enough for an agent to select it correctly.

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

resolve_symbolResolve a tickerA
Read-onlyIdempotent

Find the ticker for a company or fund name (e.g. 'nvidia' -> NVDA) across PairBook's ~4,700 covered US stocks and ETFs. Call this before other tools whenever the exact ticker is uncertain or a lookup returned not-found.

NameRequiredDescriptionDefault
limitNoMaximum matches to return (default 8)
queryYesCompany or fund name, or partial ticker

Output Schema

NameRequiredDescription
noteNo
matchesYes
total_matchesNo

TDQS

A4.3/5.0
Behavior3/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 fully covered. The description adds useful context about the coverage universe (~4,700 US stocks/ETFs) and that it can match company names or partial tickers, but it does not substantially expand on behavioral details beyond what annotations and schema already indicate.

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 only two sentences, with the core purpose and an example stated first, followed by the usage directive. Every sentence earns its place, and there is no redundant or filler content.

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 is simple with only two parameters, rich annotations, and an output schema. The description covers the purpose, usage timing, and scope, so an agent has everything needed to select and invoke it correctly.

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 parameter semantics are already fully documented in the schema. The description adds a helpful example for 'query' but no additional meaning for 'limit' or deeper formatting details, so the baseline of 3 is appropriate.

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 a specific action ('Find the ticker'), the target resource (PairBook's ~4,700 covered US stocks and ETFs), and gives a concrete example ('nvidia' -> NVDA). It is clearly distinguished from siblings like compare_pair or weekly_returns because it is specifically a name-to-ticker resolver.

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 explicitly tells the agent when to use this tool: 'Call this before other tools whenever the exact ticker is uncertain or a lookup returned not-found.' This provides clear procedural guidance relative to all siblings, making the intended invocation order unambiguous.

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

symbol_profileAsset profileA
Read-onlyIdempotent

One US stock or ETF: beta vs S&P 500, annualized volatility, 1/3/5-year returns, max drawdown, calendar-year returns, fund facts or stock fundamentals, and its most correlated assets. For diversification candidates use find_diversifiers. Covers ~4,700 US-listed stocks and ETFs only (no crypto, no foreign listings, no inverse/leveraged short funds, no intraday data); figures use weekly closes and refresh once per trading day. Unknown tickers return an error: resolve them with resolve_symbol first.

NameRequiredDescriptionDefault
symbolYesTicker, e.g. NVDA or SCHD

Output Schema

NameRequiredDescription
docsNo
fundNo
kindNo
nameNo
pageNo
as_ofYes
groupNo
termsNo
symbolYes
return_pctNo
fundamentalsNo
beta_vs_spy_3yNo
diversifiers_3yNo
most_correlated_3yNo
max_drawdown_3y_pctNo
volatility_ann_pct_3yNo
calendar_year_returns_pctNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description adds meaningful behavioral context: data uses weekly closes, refreshes once per trading day, excludes intraday data, covers only US-listed stocks/ETFs, and returns an error for unknown tickers. These details clarify what the agent can expect and pre-empt common failure modes.

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 efficient: it front-loads the returned profile fields, then provides routing guidance, coverage constraints, refresh cadence, and error handling. Every sentence contributes necessary information without redundancy.

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 single required parameter, the presence of an output schema, and the annotations, the description is complete. It covers intended use, sibling alternatives, universe restrictions, data frequency, and error behavior, leaving no practical gap for an agent deciding whether and how to call this 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?

The schema already documents the single symbol parameter with an example, so schema coverage is 100%. The description adds extra semantic context by clarifying that the symbol must be a US stock or ETF, describing coverage limits, and noting that unknown tickers produce an error resolvable with resolve_symbol.

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

Purpose4/5

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

The description clearly identifies the resource (a single US stock or ETF) and enumerates the metrics returned, including beta, volatility, returns, drawdown, and correlated assets. It also distinguishes itself from find_diversifiers, though it lacks an explicit action verb and does not differentiate against all siblings like compare_pair or analyze_portfolio.

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 routing guidance: 'For diversification candidates use find_diversifiers.' It also states when the tool should be used versus alternatives by defining the universe and exclusions, and directs users to resolve_symbol for unknown tickers before calling this tool.

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

weekly_returnsWeekly return seriesA
Read-onlyIdempotent

Weekly return series for one US stock or ETF (W-FRI, most recent last, all series end on the same Friday so tails align across symbols), for custom correlation or risk math. Covers ~4,700 US-listed stocks and ETFs only (no crypto, no foreign listings, no inverse/leveraged short funds, no intraday data); figures use weekly closes and refresh once per trading day. Unknown tickers return an error: resolve them with resolve_symbol first.

NameRequiredDescriptionDefault
weeksNoOnly return the most recent N weeks (default: all, up to 156)
symbolYesTicker, e.g. AAPL

Output Schema

NameRequiredDescription
docsNo
freqNo
as_ofYes
termsNo
symbolYes
returnsYes
window_weeksNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the description adds substantial behavioral context: W-FRI weekly closes, most recent last, aligned end Fridays, ~4,700 US-listed symbols only, exclusions, once-per-trading-day refresh, and error behavior for unknown tickers. 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.

Conciseness4/5

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

One dense paragraph with useful details front-loaded: series format and target use come first, coverage and refresh constraints follow. Slightly long but every clause conveys a distinct operational fact.

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 two-parameter tool with rich annotations and an output schema, the description covers the essential usage context: data scope, exclusions, refresh cadence, calendar alignment, and error handling. An agent has enough information to select and call 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?

Input schema covers both parameters at 100%, and the description adds extra meaning beyond the schema: symbol domain restrictions (US-listed stocks/ETFs, no crypto/foreign/inverse funds), unknown-ticker error behavior, and the weekly cadence. This meaningfully supplements the schema's basic type 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?

Clearly states the tool returns a weekly return series for one US stock or ETF, with an explicit purpose ('for custom correlation or risk math'). The single-symbol scope and series alignment details distinguish it from sibling tools like compare_pair, analyze_portfolio, and find_diversifiers.

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?

Names the intended use case ('custom correlation or risk math') and explicitly instructs users to resolve unknown tickers with resolve_symbol first. It does not enumerate when to choose this tool over every sibling, but the constraints and workflow guidance are clear.

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.

  1. 6 tool updatesv1.3.1
    • First observedanalyze_portfolio
    • First observedcompare_pair
    • First observedfind_diversifiers
    • First observedresolve_symbol
    • First observedsymbol_profile
    • First observedweekly_returns

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct level of analysis: single-symbol profile, pair comparison, portfolio analysis, raw return series, ticker resolution, and diversifier discovery. The only mild ambiguity is between compare_pair and analyze_portfolio for two-asset cases, but the descriptions explicitly state analyze_portfolio should be used for 2–30 assets and compare_pair for just two.

Naming Consistency4/5

Tool names are uniformly lowercase and underscore-separated, and most follow verb_noun structure: compare_pair, find_diversifiers, resolve_symbol, analyze_portfolio. symbol_profile and weekly_returns break that pattern slightly by being noun phrases, but the naming remains predictable and readable.

Tool Count5/5

Six tools is a well-scoped set for a financial analytics server: symbol resolution, single-asset profile, pair analysis, portfolio analysis, raw data access, and diversifier discovery each cover a distinct workflow without redundancy.

Completeness4/5

The core analytical workflows are well covered: resolving tickers, profiling a single asset, comparing pairs, finding diversifiers, fetching raw returns, and analyzing a full portfolio. Minor gaps remain, such as no bulk multi-symbol return/correlation endpoint or a standalone holdings-overlap tool, but agents can work around these with existing tools.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides access to historical stock market data from US, UK, Russian, Turkish, and Hong Kong exchanges, including company profiles, market metrics, sector performance, rankings, and visualization data for financial analysis.
    9
    8 npm
    LGPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    63 deterministic quant computation tools for autonomous financial agents. Options pricing, derivatives, risk metrics, portfolio optimization, statistics, crypto/DeFi, macro/FX, time value of money. 1,000 free calls/day, no signup required.
    74
    13
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Portfolio risk analytics MCP server — VaR, Monte Carlo simulation, stress testing, portfolio optimization, options Greeks, and correlation analysis. Real market data via Yahoo Finance. Free tier available, Pro at $29/mo.
    10
    96 npm
    2
    MIT