Skip to main content
Glama
CatalystEdge

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.

Related MCP server: Decker

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.

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

.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:

{
  "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.

{"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.

{"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.

{
  "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.

{
  "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

.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.

Available Tools

5 tools
assess_eventC

Assess a user-supplied CPI, earnings, election, or other event as unverified.

NameRequiredDescriptionDefault
as_ofNo
titleYes
breadthNounknown
ends_atNo
starts_atYes
event_typeYes
importanceNohigh
source_urlNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden and largely drops it. The phrase 'as unverified' does disclose a meaningful behavioral trait about the resulting disposition, but there is nothing about side effects, persistence, permissions, deduplication against existing events, or what 'assessed' state entails for an 8-parameter write-shaped tool.

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?

A single well-formed sentence with the resource and examples front-loaded and no filler. It is concise, though brevity here shades into under-specification rather than economy.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but with 8 undocumented parameters, zero annotations, and no clarification of what 'assess' or 'unverified' mean operationally, the description is far too thin for the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0% and the eight parameters carry only bare titles (breadth, importance, as_of, ends_at, source_url). The description explains none of them — not even the required event_type's allowed values or the default 'high' importance — so the agent must guess at semantics.

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

Purpose3/5

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

The description gives a verb ('Assess') and a resource ('event') and enumerates example event types (CPI, earnings, election), which is more than a tautology. However, 'assess' is opaque about what the tool actually produces or changes, and nothing distinguishes it from siblings like event_readiness or assess_level.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus event_readiness or upcoming_events, no prerequisites, and no exclusions. The only hint is 'user-supplied', which implies intake of external events but never says so explicitly or names an alternative path.

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

assess_levelC

Explain a break, rejection, or test at a custom level from supplied OHLCV bars.

NameRequiredDescriptionDefault
barsYes
as_ofNo
levelYes
event_idNo
directionYes
buffer_pctNo
level_nameNocustom
acceptance_closesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about side effects, whether this is purely analytical, what the output contains, or how 'as_of' / 'event_id' affect behavior. Only the existence of an output schema offsets this slightly.

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 tight, front-loaded sentence with no filler. It is efficient, but the brevity here is closer to under-specification than true conciseness given the tool's complexity.

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

Completeness2/5

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

For an 8-parameter analytical tool with zero annotation and zero schema-description coverage, a single sentence is far too thin. The presence of an output schema excuses the absence of return-value documentation, but nothing compensates for the missing parameter and selection guidance.

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

Parameters2/5

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

Schema description coverage is 0% across 8 parameters, and the description only loosely maps 'level' and 'bars'. Critical parameters such as buffer_pct (default 0.03), acceptance_closes (default 3), direction, as_of, and level_name are given no meaning anywhere, so an agent cannot know how the break/rejection decision is tuned.

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 states a specific verb ('Explain') and a specific resource ('a break, rejection, or test at a custom level from supplied OHLCV bars'), which is a distinct and recognizable analysis task. It implicitly differs from the event-oriented siblings (assess_event, event_readiness) by being level-driven, but that contrast is never made explicit.

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

Usage Guidelines2/5

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

There is no statement of when to choose this over assess_event or the readiness tools, no prerequisites, and no exclusions. An agent must infer usage purely from the phrase 'from supplied OHLCV bars.'

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

event_readinessC

Classify one catalyst as distant, preparation, pre-event, active, or resolved.

NameRequiredDescriptionDefault
as_ofNo
event_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not say whether classification is computed on the fly, what role as_of plays, whether the call has side effects, or what happens for unknown event IDs, leaving significant behavioral gaps for an unannotated tool.

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 a single front-loaded sentence that enumerates the classification outputs with zero waste. Its terseness is efficient, though it comes at the cost of missing usage and parameter detail.

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

Completeness2/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 are covered, but the description lacks any explanation of the two parameters, usage conditions, or behavioral traits. For an unannotated tool with 0% schema description coverage, this leaves the agent under-informed about how to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters, but it never mentions event_id or as_of. A reader can infer event_id is the catalyst and as_of is a reference date, but the description adds no explicit meaning, format, or constraints.

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 names a specific verb ('Classify') and resource ('one catalyst') and enumerates the five output categories, so an agent knows exactly what the tool returns. It does not distinguish itself from close siblings like assess_event or options_readiness, leaving ambiguity about which classification tool to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternatives such as assess_event or upcoming_events. The agent must infer from 'one catalyst' that this is for a single event, but nothing tells it when this classifier is preferable to sibling tools.

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

options_readinessC

Check whether event and options evidence are complete enough for human review.

NameRequiredDescriptionDefault
as_ofNo
event_idYes
maximum_lossNo
implied_move_pctNo
bid_ask_width_pctNo
days_to_expirationNo
implied_volatility_pctNo
realized_volatility_pctNo
historical_event_move_pctNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it reveals almost nothing: it never says whether the tool only reads evidence or also records a readiness state, what 'complete enough' means (criteria, thresholds), or what happens when evidence is missing. The output schema covers return values, but the behavioral profile of the call itself is undocumented.

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?

A single front-loaded sentence with zero filler. It is efficient, though the brevity leaves the substance to the other dimensions rather than wasting words.

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

Completeness2/5

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

For a 9-parameter evaluation tool with no annotations, the definition is too thin: it never explains the readiness criteria, which evidence categories are required, or how the optional numerics influence the verdict. The presence of an output schema offsets only the return-value burden, not the invocation guidance.

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

Parameters1/5

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

With 9 parameters and 0% schema description coverage, the description must supply parameter meaning and supplies none. An agent cannot tell whether implied_move_pct, bid_ask_width_pct, maximum_loss, etc. are thresholds to compare against, overrides, or merely echoed values - a critical ambiguity for correct invocation.

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?

States a specific verb ('Check') and object ('event and options evidence') with a clear goal: readiness for human review. It does not distinguish itself from the sibling 'event_readiness', leaving an agent to guess whether the difference is the inclusion of options data or something else.

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?

'Complete enough for human review' implies this is a gate to run before a review step, which is useful implied usage. But there is no explicit statement of when to prefer this over event_readiness or assess_event, and no preconditions or exclusions are given.

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

upcoming_eventsC

List curated upcoming catalysts with exact source and coverage limitations.

NameRequiredDescriptionDefault
as_ofNo
event_typesNo
lookahead_daysNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It hints that results are 'curated' and have 'coverage limitations,' but does not specify what those limitations are, whether results are exhaustive, or any other operational constraints.

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?

It is a single front-loaded sentence with no redundant text. The brevity is efficient, though it leaves important detail unspecified.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, with no annotations and no parameter descriptions, the definition is missing too much needed context for correct invocation, especially around filtering and lookahead behavior.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any of the three parameters (as_of, event_types, lookahead_days). The parameter names alone do not fully convey accepted formats or filtering behavior.

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 names a specific verb and resource ('List ... upcoming catalysts'), so the basic operation is clear. It does not explain how it differs from sibling tools such as event_readiness or assess_event.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The listing intent is implied by the name and description, but the agent must infer the usage 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.

  1. 5 tool updatesv0.1.1
    • First observedassess_event
    • First observedassess_level
    • First observedevent_readiness
    • First observedoptions_readiness
    • First observedupcoming_events

TDQS

C2.7/5.0

Scored across 5 tools

Disambiguation3/5

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.

Naming Consistency3/5

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.

Tool Count4/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enforces pre-trade planning discipline by checking entry, stop, target, and risk/reward via a gate tool, and provides proof receipts, terminal links, and risk prompts for AI assistants.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Deterministic market-state engine for trading agents — zero LLM in the signal path. 8 tools: structural market state & phase, action gate (GO/WATCH/HOLD), entry/target/invalidation coordinates, bar-by-bar state timeline, composed view cards, and pre-trade intent validation. Every output traces to a bar-stamped ledger with a public daily self-scoring track record.
    3
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables local auditing of trading strategies through MCP checkers for point-in-time data provenance, pre-trade order validation, and regime-fragility testing, while deferring promotion verdicts to a hosted service.
    14
    179 PyPI
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables users to structure supported paper-trade ideas, check them against disclosed limits, enforce a server-side cooldown, require exact manual confirmation, and review a local audit trail without broker integration or real-money execution.
    MIT