
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
pattern-vista
Advanced tools
Command-line access to Pattern Vista: K-line pattern win-rates and MA200 deviation rankings, built for AI agents and humans.
Command-line access to Pattern Vista — K-line pattern historical win-rates and MA200 deviation rankings — built to be called by AI agents as easily as by humans.
Output is JSON by default (so an agent can parse it directly); add --table
for a human-readable view.
pip install pattern-vista # or: uvx pattern-vista whoami
Generate a key at https://www.pattern-vista.com (Account → API keys), then:
pv config set-key pv_live_xxxxxxxx
# or, for ephemeral/agent use:
export PATTERN_VISTA_API_KEY=pv_live_xxxxxxxx
Resolution order: --api-key flag → PATTERN_VISTA_API_KEY → stored config.
pv whoami # validate key, show account + tier
pv deviation --over --limit 20 # stocks furthest ABOVE their 200-day average
pv deviation --under # stocks furthest BELOW (mean-reversion longs)
pv patterns --limit 20 # latest recommended patterns + 20-day win-rate
pv ticker AAPL # one symbol: current deviation + recent patterns
pv stretch --days 120 # market breadth: % of the universe above its MA200
# add --table to any command for human output:
pv deviation --under --table
$ pv deviation --under --limit 3
{
"is_billed": true,
"rows": [
{"ticker": "XYZ", "snapshot_date": "2026-05-27", "close": 41.2, "ma200": 58.9, "deviation": -0.3005},
...
]
}
A free account sees the top 2 rows of each list and patterns without the
historical win-rate. A paid subscription unlocks the full lists (up to 100) and
hist_win_w20. The tier is enforced server-side from the key — see
is_billed in every response.
from pattern_vista import PatternVistaClient
pv = PatternVistaClient(api_key="pv_live_xxxx")
under = pv.deviation("under", limit=20) # dict: {"is_billed": ..., "rows": [...]}
aapl = pv.ticker("AAPL")
The PatternVistaClient core has no CLI dependency — it is what backs the MCP
server below, so the two can never return different things.
The same data as tools your agent can call directly. No install needed if you
have uv:
{
"mcpServers": {
"pattern-vista": {
"command": "uvx",
"args": ["--from", "pattern-vista[mcp]", "pattern-vista-mcp"],
"env": { "PATTERN_VISTA_API_KEY": "pv_live_xxxxxxxx" }
}
}
}
Drop that into your MCP client's config (Claude Desktop, Claude Code, Cursor, or anything else that speaks MCP over stdio). If you would rather install it:
pip install 'pattern-vista[mcp]' # then use "command": "pattern-vista-mcp"
| Tool | Answers |
|---|---|
market_stretch | Is the market broadly extended or depressed right now, and how does that rank against its own history? |
deviation_ranking | Which symbols are furthest below (or above) their own 200-day average? |
recommended_patterns | What did last night's scan flag, and has that pattern bucket historically beaten SPY? |
ticker_report | Everything held on one symbol. |
account_status | Which account is this key, and is it on a paid tier? |
Auth resolves exactly as the CLI's does: PATTERN_VISTA_API_KEY, else the key
saved by pv config set-key. Tiering stays server-side — a free key gets 2 rows
and a null hist_win_w20, so check is_billed in the response before treating
a short list as a quiet market.
Works with both generations of the MCP Python SDK (mcp 1.x's FastMCP and
2.x's MCPServer).
(close − MA200) / MA200, refreshed nightly over an S&P 500 +
Nasdaq 100 + major-ETF universe. Split-distorted and implausible values are
filtered out before ranking.pv stretch, market_stretch) is the share of that same
universe closing above its own MA200, one reading per trading day, with the
history behind it. Free for every tier — it is the same number the public
page at https://www.pattern-vista.com/market/stretch publishes.hist_win_w20) is the historical 20-trading-day hit rate of a
pattern type since 2025-01-01. See the methodology post at
https://www.pattern-vista.com/posts/pattern-alpha-backtest.MIT
FAQs
Command-line access to Pattern Vista: K-line pattern win-rates and MA200 deviation rankings, built for AI agents and humans.
We found that pattern-vista demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.