{
  "name": "thestrat",
  "title": "TheStrat for agents",
  "version": "0.3.1",
  "description": "Quant price analysis for agents: TheStrat price action, multi-timeframe signals, simultaneous breaks. Bring your own OHLC bars; every rule cites https://thestrat.ai/docs/.",
  "keywords": [
    "quant price analysis",
    "price action",
    "multi-timeframe",
    "simultaneous breaks",
    "sector rotation",
    "technical signals",
    "TheStrat",
    "timeframe continuity",
    "OHLC",
    "bring your own data",
    "stocks",
    "ETF"
  ],
  "websiteUrl": "https://thestrat.ai/agents/",
  "documentation": "https://thestrat.ai/docs/",
  "llmsTxt": "https://thestrat.ai/llms.txt",
  "openapi": "https://mcp.thestrat.ai/openapi.json",
  "publisher": {
    "name": "TheStrat (Alex Sopa, AlexsOptions)",
    "url": "https://thestrat.ai/"
  },
  "data_policy": "Bring your own data. The server fetches no market data and stores no bars or symbols. Logs keep time, hashed caller id, tool name, sizes, duration, outcome (30 days).",
  "transports": [
    {
      "type": "streamable-http",
      "url": "https://mcp.thestrat.ai/mcp",
      "status": "live",
      "auth": "optional header 'Authorization: Bearer sk_strat_...' (free key)"
    }
  ],
  "pricing": {
    "model": "free",
    "summary": "Free. No cooldown. Fair-use limit: 60 calls per minute.",
    "fair_use_limit": {
      "calls_per_minute": 60,
      "per": "API key, or network when there is no key",
      "over_the_limit": "REST: HTTP 429 + Retry-After; MCP: tool error. Both give retry_after_seconds."
    },
    "free_key": "optional, email only: POST https://mcp.thestrat.ai/v1/keys",
    "status": "free"
  },
  "limits": {
    "symbols_per_basket": 60,
    "bars_per_symbol_basket": 500,
    "bars_per_call_single_symbol": 5000,
    "request_body_bytes": 4194304
  },
  "tools": [
    {
      "name": "classify_bars",
      "description": "Label every bar as TheStrat scenario 1, 2u, 2d or 3 (Truth #1)."
    },
    {
      "name": "timeframe_continuity",
      "description": "Full timeframe continuity (FTFC, Truth #2): is the last sale above (up) or below (down) the open of every timeframe in the group, or mixed (conflict)?"
    },
    {
      "name": "find_signals",
      "description": "Find TheStrat actionable signals on one timeframe."
    },
    {
      "name": "exhaustion",
      "description": "Exhaustion risk: how much time is left in the signal's bar (session minutes, wall-clock minutes, sessions left, fraction left), and until when the fire stays active."
    },
    {
      "name": "describe_price",
      "description": "Multi-timeframe price analysis in plain language for one symbol (quant price action, technical signals, timeframe continuity) from your own bars."
    },
    {
      "name": "resample_bars",
      "description": "Build higher-timeframe bars from smaller bars (US equities session 09:30-16:00 New York; 60-minute bars start at 09:30; extended hours are dropped; a partial first period is dropped). Each ..."
    },
    {
      "name": "define_term",
      "description": "Define a TheStrat term with a quote from the docs and its source_url (67-term glossary: definition, machine_rule where the docs state one, status \"needs Alex\" where the docs conflict). If t..."
    },
    {
      "name": "docs_search",
      "description": "Search TheStrat docs (titles and descriptions from https://thestrat.ai/llms.txt, cached 24 h). Returns title, URL, section and description. Read the URL for detail."
    },
    {
      "name": "sim_breaks",
      "description": "Simultaneous breaks: find which symbols in a basket broke their setup bar in the same direction in the same bar (2d-2u, 1-2u, 3-1-2u up / 2u-2d, 1-2d down). Quant price action and sector ro..."
    },
    {
      "name": "sim_setups",
      "description": "Simultaneous setups (before the break): a concentration of setup bars in one direction across a basket of symbols. A technical signals screener on your own data, any timeframe."
    },
    {
      "name": "sector_analysis",
      "description": "Sector rotation by participation: a sector ETF + its holdings on one timeframe."
    },
    {
      "name": "signals_in_force",
      "description": "Technical signals in force across a basket: every TheStrat actionable signal whose trigger is taken while its bar is open, grouped by direction and pattern, with % of basket and the trigger..."
    },
    {
      "name": "potential_signals_next_bar",
      "description": "Potential signals for the next bar across a basket: every setup whose trigger the next bar (or the open bar) can take, grouped by direction and pattern, with trigger, target and level of re..."
    },
    {
      "name": "buy_sell_list",
      "description": "Buy list and sell list: reversal signals in force across timeframes (technical signals screener on your own data). Buy: hammer, 2d-2u, 3-2u, 1-2u in force. Sell: shooter, 2u-2d, 3-2d, 1-2d ..."
    },
    {
      "name": "open_decisions",
      "description": "Rules the docs do not state exactly, with the default this server uses. Read this before you present a borderline result as a rule."
    },
    {
      "name": "portfolio_check",
      "description": "Protect-your-assets check for one portfolio, from your own bars: measurable conditions on the losing side of the user's positions, with the evidence. Read the playbook first: MCP resource t..."
    }
  ],
  "framing": "TheStrat does not backtest patterns. It gathers evidence of participation by price and time.",
  "prompts": [
    {
      "name": "how_thestrat_thinks",
      "title": "How TheStrat thinks",
      "description": "Load TheStrat's way of reading price (Alex Sopa) before you analyze bars with these tools.",
      "arguments": []
    },
    {
      "name": "protect_portfolio",
      "title": "Protect your assets",
      "description": "Step-by-step playbook: check a user's positions with TheStrat and report the measurable conditions on the losing side, with evidence. Conditions only, no advice.",
      "arguments": [
        "positions"
      ]
    }
  ],
  "resources": [
    {
      "uri": "thestrat://how-we-think",
      "name": "how-we-think",
      "description": "How TheStrat reads price, in Alex Sopa's words: participation groups, 80%+ algorithms, trapped traders, stops in previous ranges, timed reversals, and a worked QQQ example with real bars. Read it before you explain a TheStrat result."
    },
    {
      "uri": "thestrat://playbooks/protect-portfolio",
      "name": "protect-portfolio",
      "description": "Playbook for an agent that watches a user's portfolio with TheStrat: which bars to send, which tools to call, the conditions (VIX vs. the 4 major indexes, the opens on the losing side of each position, signals against it, concentration 80%+), and how to report them as facts, not advice."
    }
  ],
  "rest": {
    "base_url": "https://mcp.thestrat.ai",
    "call": "POST https://mcp.thestrat.ai/v1/tools/{name}",
    "openapi": "https://mcp.thestrat.ai/openapi.json"
  }
}
