Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

PineForge — offline PineScript v6 backtest MCP

OCI · GHCR.IO/PINEFORGE-4PASS/PINEFORGE-BACKTEST-MCP · SCANNED OCT 3

Offline PineScript v6 → C++ backtests at deterministic TradingView parity, run locally via MCP.

37 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency32
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • License check failed: the license (Apache-2.0 AND LicenseRef-PolyForm-Noncommercial-1.0.0-Personal-Trading) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability63
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2962 tokens (~296/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
  • Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the PineForge — offline PineScript v6 backtest MCP server?

PineForge — offline PineScript v6 backtest MCP runs locally as a container image, launched with docker run --rm -i ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

oci · ghcr.io/pineforge-4pass/pineforge-backtest-mcp

# add to Claude Code
claude mcp add pineforge-4pass-pineforge-backtest-mcp -- docker run --rm -i ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34
// .cursor/mcp.json
{
  "mcpServers": {
    "pineforge-4pass-pineforge-backtest-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "pineforge-4pass-pineforge-backtest-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add pineforge-4pass-pineforge-backtest-mcp -- docker run --rm -i ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pineforge-4pass-pineforge-backtest-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  pineforge-4pass-pineforge-backtest-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "pineforge-4pass-pineforge-backtest-mcp": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34"
      ]
    }
  }
}
// mcp.json
{
  "mcpServers": {
    "pineforge-4pass-pineforge-backtest-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/pineforge-4pass/pineforge-backtest-mcp:v0.9.34"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Oct 26 −1
    • License: pass → fail ▼ functional
    • Stability: unverified → 0.07 ▲ functional
    • Licence: Apache-2.0 → Apache-2.0 AND LicenseRef-PolyForm-Noncommercial-1.0.0-Personal-Trading functional
    • Package version: v0.9.32 → v0.9.34 functional
    • Package version: v0.9.32 → v0.9.33 functional
  • 30 Sept 26 38

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Oct 2026 · Analysed oci/ghcr.io/pineforge-4pass/pineforge-backtest-mcp@v0.9.34

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem oci
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 10 exposed · ~2,693 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
backtest_pine ~652

Run a real, deterministic backtest of a PineScript v6 strategy — prefer this over estimating its trades or P&L by reasoning, which is unreliable for Pine (series semantics, intrabar fills, and strategy.* order logic do not reproduce from approximation). Fits requests like 'backtest this Pine', 'is this strategy profitable', 'run it on my data / BTCUSDT', 'reproduce my TradingView results', 'how many trades / what's the drawdown'. Transpile a PineScript v6 strategy and run it against an OHLCV CSV via the bundled pineforge-release (in-process, no host Docker daemon). Fully local — transpile + backtest run in this image; nothing leaves the box, no API key. Optional `inputs` overrides input.*() named values from the Pine source (keys = the second arg of input.*(...) calls, e.g. 'Fast Length'). Optional `overrides` overrides strategy(...) header fields (initial_capital, commission_value, default_qty_value, pyramiding, slippage, default_qty_type, commission_type, process_orders_on_close). Returns the parsed JSON report (summary, trades, applied_inputs, applied_overrides, elapsed_seconds). If the report is too large to return inline it is written to report_path and a compact summary (with that path) is returned instead. Use backtest_pine_grid for sweeps.

NameTypeReqDescription
imagestring–Docker image override. Defaults to ghcr.io/pineforge-4pass/pineforge-release:latest.
inputsobject–Map of Pine input.*() names → value (string/number/bool). Sent as PINEFORGE_INPUTS env var to the runtime.
ohlcv_csv_pathstringyesAbsolute or cwd-relative path to OHLCV CSV with header 'timestamp,open,high,low,close,volume' (timestamp = UNIX ms UTC).
overridesobject–strategy(...) header overrides. Each key maps to a single argument of the Pine `strategy()` call; only the keys you set are applied. Sent as PINEFORGE_OVERRIDES env var. Call list_engine_params for t…
report_pathstring–Where to write the full JSON report IF it is too large to return inline. Large backtests (long trade lists + equity curves) are offloaded to this file and the tool returns a compact summary + report_…
runtimeobject–Engine runtime args (NOT strategy() header) controlling timeframe semantics and intra-bar fill simulation. input_tf / script_tf set the chart and strategy timeframes — script_tf must be coarser than…
sourcestringyesPineScript v6 source.

No output schema declared.

No examples provided.

backtest_pine_grid ~622

Use when the user wants to optimize, sweep, tune, or compare PineScript parameter values (e.g. 'try fast length 8/12/19', 'find the best commission/qty settings') rather than test a single configuration — for one fixed configuration use backtest_pine. Run a parameter sweep: transpile the Pine source ONCE (in-process, no host Docker), then compile (g++) and backtest that C++ against the OHLCV CSV once per combination in the cartesian product of `inputs` × `overrides` grids. Returns a ranked list of {inputs, overrides, summary, elapsed_seconds} entries sorted by `sort_by` descending, plus the top entry under `best`. Cap: max_combinations (default 64). Set concurrency > 1 to run backtests in parallel — 2-4 is usually plenty.

NameTypeReqDescription
concurrencyinteger–Parallel backtests. Default 1.
fixed_inputsobject–Inputs applied to every combo (overridden by per-combo `inputs` keys).
fixed_overridesobject–Overrides applied to every combo (overridden by per-combo `overrides` keys).
imagestring–Docker image override. Defaults to ghcr.io/pineforge-4pass/pineforge-release:latest.
include_tradesboolean–Include the per-trade list in each result. Default false (saves tokens).
inputsobject–Grid of input.*() names → list of values to sweep. Example: {"Fast Length": [8, 12, 19], "Slow Length": [21, 26, 39]}
max_combinationsinteger–Hard cap on combinations. Default 64.
ohlcv_csv_pathstringyesPath to OHLCV CSV (same format as backtest_pine).
overridesobject–Grid of strategy(...) header overrides → list of values, one axis per key. Example: {"default_qty_value": [1, 5], "commission_value": [0.04]}. Call list_engine_params for the full catalog with types…
report_pathstring–Where to write the full sweep JSON IF it is too large to return inline. Oversized sweeps are offloaded here and the tool returns the best + top-ranked combinations + report_path; read the file for al…
runtimeobject–Engine runtime args applied to every combo in the sweep. Same shape as backtest_pine.runtime — input_tf / script_tf / bar_magnifier / magnifier_samples / magnifier_dist. Currently fixed across the gr…
sort_bystring–summary.* field to rank by, descending. Default net_pnl.
sourcestringyesPineScript v6 source.

No output schema declared.

No examples provided.

binance_symbols ~220

List/validate symbols available on the Binance public API for OHLCV fetching. Filters: `query` (substring of the symbol), `quote_asset` (e.g. 'USDT'), `base_asset` (e.g. 'BTC'), `status` (e.g. 'TRADING'), `contract_type` (futures only, e.g. 'PERPETUAL'). Results are cached 5 min in process. Free.

NameTypeReqDescription
base_assetstring–Filter by base asset (e.g. 'BTC').
contract_typestring–Futures only. 'PERPETUAL' for usdt_perp swaps.
limitinteger–Max symbols to return. Default 200.
marketstringyes'spot' or 'usdt_perp'.
querystring–Case-insensitive substring of the symbol.
quote_assetstring–Filter by quote asset (e.g. 'USDT').
statusstring–Filter by status. 'TRADING' returns active only.

No output schema declared.

No examples provided.

check_pine_feature ~264

Answer "does PineForge support X?" for a specific Pine v6 identifier or namespace (e.g. 'ta.supertrend', 'alert', 'array.new', 'request.financial'). Use it (a) BEFORE relying on any function you are unsure about while writing a strategy, and (b) to DIAGNOSE a backtest that compiled but behaved wrong or empty — plots, tables and alerts (plot, bgcolor, table, alert) are accepted and produce NO effect, while line, box and label objects are data the strategy can read back. Resolves by exact feature match, then longest namespace prefix, then alias, returning {query, status, topic, note} where status is supported / partial / unsupported / via_transpiler / not_found (via_transpiler = works end-to-end; unsupported = refused, not compiling, stopping the run, or no effect) and the note quotes the catalog entry, which says what THIS server can and cannot do (e.g. request.security on another symbol). Local, free, no engine run.

NameTypeReqDescription
featurestringyesPine identifier or namespace to look up, e.g. 'ta.supertrend', 'alert', 'array.new', 'strategy.entry', 'request.dividends'.

No output schema declared.

No examples provided.

engine_info ~38

Report the bundled backtest engine: mode, baked-in flag, and version. This image runs the engine in-process (no host Docker daemon needed).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

fetch_binance_ohlcv ~268

Fetch OHLCV candles from Binance public API and write a backtest-ready CSV (header: timestamp,open,high,low,close,volume; timestamp = open time in UNIX ms UTC). Supports `spot` and `usdt_perp` (USDT-margined perpetual futures). Requests larger than 1000 bars are paginated automatically. The output path must live inside the MCP cwd unless PINEFORGE_ALLOW_ANYWHERE=1.

NameTypeReqDescription
end_timeinteger–UNIX ms UTC. Defaults to now.
intervalstringyesKline interval. Spot supports 1s + 1m..1M; usdt_perp supports 1m..1M (no 1s).
limitinteger–Total bars to fetch. Default 1000. Paginated above 1000.
marketstring–'spot' (default) or 'usdt_perp'.
output_pathstringyesPath to write the CSV (will create parent dirs as needed).
start_timeinteger–UNIX ms UTC. If unset, derived from end_time/now and limit.
symbolstringyesBinance symbol, e.g. 'BTCUSDT'. Use binance_symbols to validate.

No output schema declared.

No examples provided.

get_coverage_topic ~162

Returns the full detail plus the exact supported[], partial[], via_transpiler[] and unsupported[] feature lists for ONE coverage topic id (ids from list_coverage_topics, e.g. 'ta', 'strategy_orders', 'request_security', 'drawing_plotting_alerts'). Use when you are about to work in a feature area and need to know precisely which functions there are implemented vs skipped — e.g. before using request.security, the ta.* library, or strategy risk knobs. Unknown ids return an error marker listing the valid ids. Local, free, no engine run.

NameTypeReqDescription
topicstringyesCoverage topic id from list_coverage_topics (e.g. 'ta', 'strategy_orders', 'request_security', 'drawing_plotting_alerts').

No output schema declared.

No examples provided.

list_coverage_topics ~181

START HERE before writing, porting, or backtesting a Pine v6 strategy on PineForge. PineForge implements a SUBSET of Pine v6, so checking coverage first avoids a strategy that compiles but silently misbehaves vs TradingView. Lists every coverage topic with a one-line status (supported / partial / unsupported / via_transpiler) and summary, plus the legend (note: via_transpiler still works end-to-end; unsupported means refused, not compiling, stopping the run where its value is read, or accepted with no effect) and the coverage version. Statuses describe what a backtest on THIS server can do. Cheap, free, local — no engine run, no I/O. Then drill in with get_coverage_topic for one area's per-feature lists, or check_pine_feature to look up a single identifier.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_engine_params ~159

Returns the full catalog of engine knobs accepted by backtest_pine / backtest_pine_grid in two groups: strategy_overrides (the 9 strategy(...) header fields the runtime reads via PINEFORGE_OVERRIDES — initial_capital, pyramiding, slippage, commission_value, commission_type, default_qty_value, default_qty_type, process_orders_on_close, close_entries_rule) and runtime_args (input_tf, script_tf, bar_magnifier, magnifier_samples, magnifier_dist — args to run_backtest_full, NOT part of the strategy() header). Each entry is {key, type, enum?, description}. Does not run the engine. Use this to discover what knobs the engine exposes before issuing a backtest.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

transpile_pine ~127

Transpile PineScript v6 source to a C++ translation unit locally, using the pineforge-codegen transpiler bundled in this image (in-process, no host Docker). No API key, no network — source never leaves the machine. Returns the generated C++ as text. Use backtest_pine if you also want to run the strategy.

NameTypeReqDescription
imagestring–Docker image override. Defaults to ghcr.io/pineforge-4pass/pineforge-release:latest.
sourcestringyesPineScript v6 source (must include //@version=6).

No output schema declared.

No examples provided.

Common questions

What is the PineForge — offline PineScript v6 backtest MCP server?

PineForge — offline PineScript v6 backtest MCP is listed in the public MCP registry as io.github.pineforge-4pass/pineforge-backtest-mcp. Offline PineScript v6 → C++ backtests at deterministic TradingView parity, run locally via MCP. This page covers its container image (ghcr.io/pineforge-4pass/pineforge-backtest-mcp).

Is the PineForge — offline PineScript v6 backtest MCP server safe to use?

PineForge — offline PineScript v6 backtest MCP scores 37 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the PineForge — offline PineScript v6 backtest MCP server expose?

PineForge — offline PineScript v6 backtest MCP exposes 10 tools: transpile_pine, backtest_pine, backtest_pine_grid, fetch_binance_ohlcv, binance_symbols, and 5 more. Their descriptions and schemas cost roughly 2,693 tokens of context every time the server is loaded.

Is the PineForge — offline PineScript v6 backtest MCP server still maintained?

PineForge — offline PineScript v6 backtest MCP is still listed as active in the MCP registry. We last reached this channel on 3 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.