Backtest360
(unclaimed - source: registry-official · publisher: com.backtest360) · languages: en · regions: global · github · more from com.backtest360 →
MCP server exposing the Backtest360 engine API as tools for AI agents. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_a92c947486/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_a92c947486/ask -d '{"tool":"get_me","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_a92c947486 # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://mcp.backtest360.com/mcp- Pricing
- not listed
- Access
- api-key / auth (401)
- Links
- repository
Live capabilities — 20 tool(s) it actually exposes · backtest360 v0.2.4 (measured from a real MCP handshake, not self-reported)
get_me — The configured API key's permissions, limits, and current usage.
Cheap. Call early in a session — before planning work — to learn what
this keyengine_info — Engine version, API contract number, and health.
Free (not quota-counted). Call once at the start of a session
to confirm the engine is reachabget_catalog — Fetch one engine reference catalog.
Catalogs (cheap, cacheable per session):
- 'operators' — comparison operators for condition expressions
list_indicators — List indicators, or fetch one indicator's full schema.
Cheap, cacheable per session.
With no arguments: a compact catalog — ``{"indicators": [list_templates — List predesigned strategy templates, or fetch one in full.
Cheap, cacheable per session. The engine returns the templates
available to the callget_strategy_schema — JSON Schema for the strategy document (condition_tree + indicators).
Fetch this before composing a strategy by hand; the
validate_strategy toolvalidate_strategy — Validate a strategy document without running a backtest.
A cheap quota separate from backtest runs,
so validate freely and ALWAYS before run_barun_backtest — Run a historical backtest against the engine.
Quota-counted and compute-bound. Validate the
strategy first (validate_strategy is far cheaper). get_latest_signal — Evaluate the strategy on the most recent bar only — no P&L, no stats.
Returns the latest signal (-1/0/1), which
condition slots fired, and the compare_backtests — Run several strategies on the same data and compare side by side.
One quota-counted call, but compute scales with the number of
strategies. If export_backtest — Export a multi-strategy comparison as an Excel workbook.
Quota-counted; needs a key whose plan includes full-metrics export
(a 403 means the cocompute_stats — Compute the engine's performance metrics from a returns series.
Use when the returns came from somewhere
other than run_backtest (an external ssearch_tickers — Search available assets by ticker or name (relevance-ranked).
Use to resolve a user's asset mention ("bitcoin",
"S&P") to the exact ticker befolist_tickers — List available tickers, optionally filtered by asset class.
The full universe is very large, so the MCP server
caps the returned list and marksget_data_range — Available date range and estimated bar count for a symbol/frequency.
Available on paid plans. Call before a server-side fetch so the
requested get_ticker_info — Identity and data coverage for one symbol, in a single call.
Metadata only — no market data, so no paid plan is needed. Returns the
asset's ideget_quote — Latest available price for a symbol.
Requires a paid plan (managed market data). Returns the most recent
*available* bar for the given frequencget_price_history — OHLCV price history for a symbol over a date range.
Requires a paid plan (managed market data). ``start`` is required
(``YYYY-MM-DD``); ``end``list_macro_series — List the available macroeconomic series (the catalog).
Free — no special plan. Returns the set of macro series you can fetch
with get_macro_serget_macro_series — Observations for one macroeconomic series over an optional date range.
Free — no special plan. ``series`` is an ``id`` from list_macro_series
(Call the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_a92c947486 # full record + verification history · 402 → 0.001 USDCRun it here — free preview loads instantly; the full record is 0.001 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-09-24
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-09-24
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_a92c947486)<a href="https://jishie.com/agent.html?id=aix_a92c947486"><img src="https://jishie.com/v1/agents/aix_a92c947486/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — calendar-sync
| Agent | Track record | Price |
|---|---|---|
| Callendar T2 | relevance 82 | — |
| vietnamese-calendar T2 | relevance 77 | — |
| Archetypal AI T2 | relevance 73 | — |
| AgentCrush T2 | relevance 71 | — |
| mcp T2 | relevance 71 | — |
Raw machine record (what agents receive)
{
"id": "aix_a92c947486",
"name": "Backtest360",
"operator": "(unclaimed - source: registry-official · publisher: com.backtest360)",
"description": "MCP server exposing the Backtest360 engine API as tools for AI agents.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-09-24",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"calendar-sync",
"market-data",
"onchain-data",
"trading-strategy"
],
"protocols": {
"mcp": "https://mcp.backtest360.com/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 738,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 63,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-09-24T22:00:57.251Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "repository",
"url": "https://github.com/Backtest360/backtest360-mcp"
}
],
"avatar": "https://github.com/Backtest360.png?size=160",
"socials": [
{
"label": "github",
"url": "https://github.com/Backtest360"
}
],
"profile": {
"mcp_server": "backtest360",
"mcp_version": "0.2.4",
"tool_count": 20,
"tools": [
{
"name": "get_me",
"description": "The configured API key's permissions, limits, and current usage.\n\n Cheap. Call early in a session — before planning work — to learn what\n this key can do instead of discovering limits through failed calls.\n\n Returns:\n ``scopes``: the permission scopes the key carries. ``limits``:\n requests per minute and per day, max concurrent requests, and the\n per-run bar cap (null when uncapped). ``usage``: current\n consumption against those limits, with reset countdowns in\n seconds. ``capabilities``: feature flags such as server-s"
},
{
"name": "engine_info",
"description": "Engine version, API contract number, and health.\n\n Free (not quota-counted). Call once at the start of a session\n to confirm the engine is reachable and which contract it serves.\n "
},
{
"name": "get_catalog",
"description": "Fetch one engine reference catalog.\n\n Catalogs (cheap, cacheable per session):\n - 'operators' — comparison operators for condition expressions\n - 'execution-modes' — entry/exit anchors and fill algorithms, with the\n validity matrix by market type\n - 'stop-types' — stop-loss types, re-entry modes, and their parameters\n - 'sizing-methods' — position-sizing methods and their parameters\n - 'bar-frequencies' — supported bar frequencies and the signal x\n execution validity matrix (which combinations are allowed)\n - 'sections' — the f"
},
{
"name": "list_indicators",
"description": "List indicators, or fetch one indicator's full schema.\n\n Cheap, cacheable per session.\n\n With no arguments: a compact catalog — ``{\"indicators\": [...],\n \"count\": N}`` — where each entry carries id, name, category, kind,\n and value_dtype (no description, to keep the discovery scan small). Use\n it to discover what exists. Pass name='rsi' (id or name,\n case-insensitive) to get that single indicator's complete entry\n including its description and params_schema — do this before adding an\n indicator to a strategy so its parameters are exactly r"
},
{
"name": "list_templates",
"description": "List predesigned strategy templates, or fetch one in full.\n\n Cheap, cacheable per session. The engine returns the templates\n available to the calling key.\n\n With no arguments: a compact catalog — ``{\"templates\": [...],\n \"count\": N}`` — where each entry carries id, origin, name, and\n description. Use it to discover what exists. Pass name='sma-cross'\n (id or name, case-insensitive) to get that single template's complete\n entry: its strategy logic (``condition_tree`` + ``indicators``, the\n same shape validate_strategy and run_backtest accept"
},
{
"name": "get_strategy_schema",
"description": "JSON Schema for the strategy document (condition_tree + indicators).\n\n Fetch this before composing a strategy by hand; the\n validate_strategy tool checks against the same rules.\n "
},
{
"name": "validate_strategy",
"description": "Validate a strategy document without running a backtest.\n\n A cheap quota separate from backtest runs,\n so validate freely and ALWAYS before run_backtest.\n\n Args:\n strategy: The strategy document — name, indicators[], and\n condition_tree (see get_strategy_schema for the exact shape).\n injected_indicators: Names of custom time-series columns the\n caller will supply via data_inputs at run time, so conditions\n referencing them validate.\n\n Returns:\n On success: {\"valid\": true, \"warmup_bars\": .."
},
{
"name": "run_backtest",
"description": "Run a historical backtest against the engine.\n\n Quota-counted and compute-bound. Validate the\n strategy first (validate_strategy is far cheaper). On a 504 compute\n timeout, do NOT retry the same request — reduce the date range, use a\n coarser frequency, or simplify the strategy. On 429/503, wait for the\n advertised Retry-After before retrying.\n\n Args:\n data_source: Either inline OHLCV ({\"ohlcv\": {dates, open, high,\n low, close, volume?}} as parallel arrays, ISO-8601 dates) or a\n server-side fetch ({\"symbol\", \"st"
},
{
"name": "get_latest_signal",
"description": "Evaluate the strategy on the most recent bar only — no P&L, no stats.\n\n Returns the latest signal (-1/0/1), which\n condition slots fired, and the bar timestamp. Use for \"what would this\n strategy do right now\" questions; use run_backtest for performance.\n "
},
{
"name": "compare_backtests",
"description": "Run several strategies on the same data and compare side by side.\n\n One quota-counted call, but compute scales with the number of\n strategies. If the wall-clock compute budget is exceeded, the call\n fails with a tool error (504) instead of returning partial results —\n narrow the request (fewer strategies, shorter date range, coarser\n frequency) and retry.\n\n Args:\n data_source: Shared data source (same shape as run_backtest).\n strategies: List of {\"label\": str, \"strategy\": {...},\n \"execution\": {...}?} entries. Labels"
},
{
"name": "export_backtest",
"description": "Export a multi-strategy comparison as an Excel workbook.\n\n Quota-counted; needs a key whose plan includes full-metrics export\n (a 403 means the configured key's plan does not — do not retry).\n Returns the workbook base64-encoded — decode and write it to a\n ``.xlsx`` file.\n\n Args:\n data_source: Shared data source (same shape as run_backtest).\n strategies: Same shape as compare_backtests' ``strategies``.\n include_benchmark: Add a buy-and-hold benchmark to the export.\n\n Returns:\n {\"filename\", \"content_type\", \"si"
},
{
"name": "compute_stats",
"description": "Compute the engine's performance metrics from a returns series.\n\n Use when the returns came from somewhere\n other than run_backtest (an external system, a portfolio) — backtest\n results already include these statistics.\n\n Args:\n returns: Per-bar log returns as {\"dates\": [...], \"values\": [...]}\n parallel arrays (ISO-8601 dates).\n trading_days_per_year: Required annualization factor — 252 for a\n daily equities calendar, 365 for 24/7 crypto. Must match the bar\n calendar of the returns series; a wrong va"
},
{
"name": "search_tickers",
"description": "Search available assets by ticker or name (relevance-ranked).\n\n Use to resolve a user's asset mention (\"bitcoin\",\n \"S&P\") to the exact ticker before requesting a server-side data fetch.\n asset_class filters to 'stocks', 'crypto', 'forex', or 'indices'.\n "
},
{
"name": "list_tickers",
"description": "List available tickers, optionally filtered by asset class.\n\n The full universe is very large, so the MCP server\n caps the returned list and marks it ``truncated_by_mcp`` — pass\n asset_class to narrow it, or use search_tickers to resolve a specific\n asset by name.\n "
},
{
"name": "get_data_range",
"description": "Available date range and estimated bar count for a symbol/frequency.\n\n Available on paid plans. Call before a server-side fetch so the\n requested start/end stay inside what the provider can deliver and the\n bar count stays inside the key's per-run limit.\n "
},
{
"name": "get_ticker_info",
"description": "Identity and data coverage for one symbol, in a single call.\n\n Metadata only — no market data, so no paid plan is needed. Returns the\n asset's identity (name, asset class, exchange, currency, and whether it\n is still active) together with a coverage summary for the given\n frequency: the available date range and an estimated bar count. Use it\n to confirm a symbol resolves and that the history you need exists before\n requesting a quote or a price fetch. For the precise per-frequency range\n use get_data_range.\n "
},
{
"name": "get_quote",
"description": "Latest available price for a symbol.\n\n Requires a paid plan (managed market data). Returns the most recent\n *available* bar for the given frequency — the end-of-day close for\n daily, the last completed bar otherwise — as open/high/low/close/volume\n plus an ``as_of`` timestamp for that bar. This is a last-known price,\n not a live tick; read ``as_of`` to judge how stale it is.\n "
},
{
"name": "get_price_history",
"description": "OHLCV price history for a symbol over a date range.\n\n Requires a paid plan (managed market data). ``start`` is required\n (``YYYY-MM-DD``); ``end`` defaults to today. Returns a summary (symbol,\n resolved date range, total bar count, price range, gap flags),\n market-hours detection, and the OHLCV arrays. A long history is\n downsampled by the MCP server to a bounded number of points — first and\n last bar always kept, every column thinned on the same dates — with\n ``downsampled_from_bars`` and ``points_returned`` recorded on the\n ``ohlcv`` bl"
},
{
"name": "list_macro_series",
"description": "List the available macroeconomic series (the catalog).\n\n Free — no special plan. Returns the set of macro series you can fetch\n with get_macro_series, each with its stable ``id`` (the value\n get_macro_series takes), title, category, native reporting frequency,\n and units, plus the list of categories. Optionally filter to one\n ``category`` (e.g. rates, yield_curve, inflation, employment, recession,\n growth). Call this first to find the ``id`` for the series you want.\n "
},
{
"name": "get_macro_series",
"description": "Observations for one macroeconomic series over an optional date range.\n\n Free — no special plan. ``series`` is an ``id`` from list_macro_series\n (e.g. treasury_10y, cpi, unemployment_rate); arbitrary external ids are\n not accepted. ``start``/``end`` are ``YYYY-MM-DD``, inclusive, both\n optional (full history when omitted). Returns the value series at its\n native reporting frequency, with the series descriptor and an ``as_of``\n date. A long history is downsampled by the MCP server to a bounded\n number of points (first and last kept), marked with\n"
}
],
"profiled_at": "2026-09-24T22:00:57.251Z"
},
"unreachable": false,
"payment_method": "auth"
}