CatalystEdge
# CatalystEdge
**The catalyst is the clock. The level is the decision point. Price confirms the break.**
CatalystEdge is a local MCP server for explainable catalyst readiness and market-level
behavior. It separates two questions that are too often mashed into one bad trade:
1. Is a scheduled catalyst close enough to justify volatility research?
2. Did price merely cross a level, or did the auction accept beyond it?
It does not predict direction, fetch market data, select an option, connect to a broker,
or authorize a trade.
## What it does
- Lists a small, source-backed bundled catalyst catalog.
- Accepts custom CPI, earnings, election, and other event times as **unverified input**.
- Classifies event lifecycle as distant, preparation, pre-event, active, post-event, or resolved.
- Assesses up to 500 user-supplied OHLCV bars around any positive price level.
- Distinguishes `testing`, `provisional`, `rejected`, `accepted_unconfirmed`, and `confirmed`.
- Checks whether options evidence is complete without recommending a contract or strategy.
- Runs locally over MCP stdio with no API key or network request.
## Confirmation rule
A catalyst never upgrades a weak break. A confirmed level break requires repeated
closes beyond a configurable buffer plus at least one observable confirmation:
- a retest that touches the level area and holds;
- post-break volume at least 1.2× the pre-break median; or
- a decisive candle body closing near its directional extreme.
This is a deterministic heuristic state—not a calibrated probability of profit.
## Install
Requires Python 3.11 or newer.
```bash
git clone https://github.com/kvandre12-commits/catalystedge-mcp.git
cd catalystedge-mcp
python -m venv .venv
.venv/bin/python -m pip install -e .
```
On Windows, use `.venv\\Scripts\\python` instead of `.venv/bin/python`.
## Keyless demo
```bash
.venv/bin/python examples/demo.py
```
The demo uses fixed synthetic OHLCV bars and the bundled 2026 election-results window.
It performs no network request and must not be presented as live market analysis.
## MCP configuration
Use an absolute path in your MCP client's configuration:
```json
{
"mcpServers": {
"catalystedge": {
"command": "/absolute/path/to/catalystedge-mcp/.venv/bin/python",
"args": ["-m", "catalystedge.server"]
}
}
}
```
CatalystEdge uses stdio. It does not expose an HTTP port or require a SharpEdge server.
## MCP tools
### `upcoming_events`
Lists curated bundled catalysts in a bounded horizon.
```json
{"as_of":"2026-10-20T12:00:00Z","lookahead_days":15}
```
The response explicitly reports that this is not a complete market calendar.
### `event_readiness`
Assesses one bundled event by ID.
```json
{"event_id":"fomc-2026-10-28-statement","as_of":"2026-10-27T18:00:00Z"}
```
### `assess_event`
Assesses a user-supplied event without claiming CatalystEdge verified it.
```json
{
"title":"Consumer Price Index",
"event_type":"cpi",
"starts_at":"2026-11-12T08:30:00-05:00",
"source_url":"https://www.bls.gov/schedule/news_release/cpi.htm",
"as_of":"2026-11-11T14:00:00Z"
}
```
### `assess_level`
Assesses supplied chronological OHLCV bars around one level.
```json
{
"bars":[
{"open":779.7,"high":780.5,"low":779.6,"close":780.3,"volume":180},
{"open":780.3,"high":780.6,"low":780.2,"close":780.4,"volume":170},
{"open":780.4,"high":780.7,"low":780.3,"close":780.5,"volume":160}
],
"level":780,
"direction":"above",
"level_name":"decision rail"
}
```
### `options_readiness`
Checks event context and required user-supplied options evidence:
- implied volatility and a comparable realized-volatility measure;
- implied move and a comparable historical event move;
- bid-ask width;
- days to expiration;
- maximum defined loss.
Even complete evidence returns `trade_permission: false`.
## Event coverage and provenance
Version 0.1.1 deliberately bundles only a narrow, auditable catalog:
- October 28, 2026 FOMC statement;
- October 28, 2026 FOMC press conference;
- November 3–4, 2026 U.S. midterm election analytical results window.
The election date is official; the results-window timestamps are transparent analytical
boundaries because jurisdictions do not publish results on one universal schedule.
Release times should always be rechecked on event day. Custom events remain unverified
even when the caller supplies an official-looking URL.
CatalystEdge bundles no proprietary prices, options chains, earnings feed, or economic
database. Users are responsible for their right to provide data from another source.
## Output honesty
- Missing evidence is never converted to neutral evidence.
- Invalid timestamps, bars, numbers, or unknown event IDs return explicit errors.
- All timestamps must include timezone offsets.
- A wick is not acceptance.
- Repeated closes show acceptance, not guaranteed continuation.
- Event proximity means “inspect,” not “buy volatility.”
- No output is personalized financial advice.
## Development
```bash
.venv/bin/python -m pytest -q
.venv/bin/ruff check src tests examples
.venv/bin/python -m compileall -q src tests examples
```
The tests replay deterministic events and bars. They do not require credentials or
network access.
## License
MIT. Third-party event pages and user-supplied market data remain governed by their own
terms. CatalystEdge is an independent research project and is not affiliated with the
Federal Reserve, USA.gov, BLS, any exchange, broker, or data vendor.
TDQS
Scored across 5 tools
Three tools center on evaluating events (event_readiness, assess_event, options_readiness), and an agent could initially struggle to pick between classifying a catalyst's lifecycle stage and assessing a user-supplied event. The descriptions do draw boundaries (classification vs. unverified assessment vs. evidence-completeness check), but the conceptual overlap keeps this from being clean.
The set mixes noun-phrase names (event_readiness, options_readiness, upcoming_events) with verb_noun names (assess_event, assess_level), giving two distinct conventions within five tools. Names remain readable and snake_case throughout, but the pattern is not predictable.
Five tools is well within the reasonable range for a narrow catalyst/event-readiness domain, and each tool maps to a distinct step in the workflow. The only minor concern is that the surface is thin enough that some tools feel like fragments of a larger lifecycle.
The set covers discovery (upcoming_events), classification (event_readiness), user-event assessment, evidence checking, and level analysis, but stops there. There is no way to fetch detail on a specific catalyst, register or track an event over time, or revisit resolved events, which are natural gaps for a catalyst-tracking server.