# Stratify

> Backtest NIFTY option strategies on real 1-minute data, with an honest out-of-sample panel.

- name: site.aeon-labs/stratify
- version: 0.1.2
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 74/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/site.aeon-labs%2Fstratify
- tools: https://api.protogrid.dev/v1/servers/site.aeon-labs%2Fstratify/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "stratify": {
      "type": "http",
      "url": "https://stratify-mcp.aeon-labs.site/mcp",
      "headers": {
        "Authorization": "Bearer ${STRATIFY_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${STRATIFY_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-35d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 74/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: run_backtest (idempotentHint); describe_coverage (idempotentHint); list_strategies (idempotentHint); …
- pass `tools.token_cost`: about 4,003 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 11 tool changes in 30 days
- fail `stability.rug_pull`: 2 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 1 resolved packages
- n/a `deps.mcp_sdk_version`: the official MCP SDK is not in the dependency graph
- pass `deps.resolvable`: stratify-mcp@0.1.2 resolved: 1 packages

- tools: 11, about 4,003 tokens to load them all
- tool set hash: b51dab77a7b2ffffb1f8bac42d6ad3dc
- tools last changed: 2026-09-25T14:32:29.223Z
- badge: [![protogrid quality](https://protogrid.dev/badge/site.aeon-labs/stratify.svg)](https://protogrid.dev/servers/site.aeon-labs/stratify)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-25 `my_feedback` changed (outputSchema)
- 2026-09-25 `build_report` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: Turn a stored backtest into a finished, self-contained Stratify report — one HTML document with the honesty panel, equity and drawdown curves, walk-forward folds, the gross-to-net breakdown, a month grid and the trade table. PUBLISH THE RETURNED HTML VERBATIM AS AN ARTIFACT (Claude), a canvas document (ChatGPT, Gemini), or write it to a .html file (CLI clients). Do not rewrite it, summarise it into your own chart code, or regenerate the figures — the numbers in it came from the backtest, and anything you redraw from a table is a second source that can disagree with the first. It needs no network, no libraries and no build step, and it renders on light and dark. Use it when someone asks for a report, a summary they can keep, something to share, or an artifact.
  - after: Creates a shareable report page for a backtest the user owns and returns its URL. The page carries the honesty panel, equity and drawdown curves, walk-forward folds, the gross-to-net breakdown, a month grid and the trade table, computed from the stored backtest. Use when the user asks for a report or something to share.
- 2026-09-25 `submit_feedback` changed (description, outputSchema) **meaning changed**
  - before: Report a bug, request a feature, flag a data gap, or say what worked. Use this whenever the user expresses a problem with this service or wishes it did something it does not — do not just apologise to them, file it. If a backtest was involved, pass its backtest_id: that attaches the exact spec and the recent call trail so the issue can be reproduced without a reply. Tell the user you filed it and give them the returned id.
  - after: Files a bug report or feature request when the user asks to report something. Confirm the title and body with the user before filing. Passing backtest_id attaches that backtest's spec so the issue can be reproduced.
- 2026-09-25 `fetch` changed (outputSchema)
- 2026-09-25 `search` changed (outputSchema)
- 2026-09-25 `list_strategies` changed (description, outputSchema)
  - before: Strategies from THIS account's history that held up under out-of-sample and walk-forward checks, not merely ones that made money. Ranked by worst walk-forward fold — consistency, not size. Call it to answer 'what has worked for me so far?' without re-running anything.
  - after: Strategies from THIS account's history that held up under out-of-sample and walk-forward checks, not merely ones that made money. Ranked by worst walk-forward fold — consistency, not size. Answers what has worked on this account so far without re-running anything.
- 2026-09-25 `get_backtest` changed (outputSchema)
- 2026-09-25 `list_backtests` added
  - The account's backtests, newest first, with id, date, trade count, net P&L and report URL. Answers a request for the most recent run, which list_strategies does not: that one returns only results that passed the evidence checks, ranked by consistency rather than by date.
- 2026-09-25 `explain_methodology` changed (description, outputSchema)
  - before: How a result is produced and how to judge it: entry pricing, settlement, margin, slippage, the honesty rubric, and what each check can and cannot prove. Read this before trusting any backtest, including ours.
  - after: How a result is produced: entry pricing, settlement, margin, slippage, the honesty rubric, and what each check can and cannot establish.
- 2026-09-25 `describe_coverage` changed (description, outputSchema)
  - before: What data is available: symbols, date range, resolution, structures, gates, biases, the cost model, and every known gap. Call this before building a spec.
  - after: What data is available: symbols, date range, resolution, structures, gates, biases, the cost model, and every known gap.

Full history: https://api.protogrid.dev/v1/servers/site.aeon-labs%2Fstratify/changes

## Dependencies

- npm stratify-mcp@0.1.2: resolved, 0 dependencies

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://stratify-mcp.aeon-labs.site/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm stratify-mcp@0.1.2 secrets: STRATIFY_API_KEY

## Tools (11)

- `build_report`: Creates a shareable report page for a backtest the user owns and returns its URL. The page carries the honesty panel, equity and drawdown curves, walk-forward folds, the gross-to-net breakdown, a month grid and the trade table, computed from the stored backtest. Use when the user asks for a report or something to share.
- `describe_coverage`: What data is available: symbols, date range, resolution, structures, gates, biases, the cost model, and every known gap.
- `explain_methodology`: How a result is produced: entry pricing, settlement, margin, slippage, the honesty rubric, and what each check can and cannot establish.
- `fetch`: Fetch a document or backtest result by id, as returned by search.
- `get_backtest`: Retrieve a previous backtest result by its id — honesty panel, equity curve and per-trade detail, exactly as first computed.
- `list_backtests`: The account's backtests, newest first, with id, date, trade count, net P&L and report URL. Answers a request for the most recent run, which list_strategies does not: that one returns only results that passed the evidence checks, ranked by consistency rather than by date.
- `list_strategies`: Strategies from THIS account's history that held up under out-of-sample and walk-forward checks, not merely ones that made money. Ranked by worst walk-forward fold — consistency, not size. Answers what has worked on this account so far without re-running anything.
- `my_feedback`: Reports this account has filed, and where each one stands. Use it to answer 'did that bug I reported ever get fixed?'.
- `run_backtest`: Backtest an Indian index option strategy on real 1-minute NIFTY options data. Returns P&L after real charges and slippage, return-on-margin, and an honesty panel: out-of-sample split, walk-forward folds, bootstrap interval, and a deflated Sharpe that accounts for how many variants you have already tried. Refuses windows too narrow to be meaningful, and reports no ratios below 30 trades. Two spec forms: a PRESET (structure + params) for the common shapes, or an OPEN STRATEGY (legs + rules) for anything else — any number of legs at any strikes on any expiry, strikes chosen by percent, points, premium or delta, entry at any minute, and rules that CHANGE the position while it is live (roll a tested leg, close one side, add a hedge, trail a stop) plus book-level rules like standing down after three losers. Nothing here is restricted by tier; a paid tier only widens the date window.
- `search`: Search what this service covers — symbols, dates, structures, signals, methodology. Returns ids usable with fetch.
- `submit_feedback`: Files a bug report or feature request when the user asks to report something. Confirm the title and body with the user before filing. Passing backtest_id attaches that backtest's spec so the issue can be reproduced.
