Agentic Portal

Pine Script Lint

finance
Serving

Static checks for TradingView Pine Script v5/v6. POST /v1/integrity finds what makes a backtest look better than live: future data via lookahead, unconfirmed higher-timeframe values, signals drawn on past bars, realtime-only state, strategy fill assumptions. POST /v1/lint adds syntax and version checks. Each finding has line, code and severity. Never claims the script compiles.

Endpoint
POST https://agent.pocket.network/v1/pine-script-lint-v1/v1/integrity
Price per call
$0.005 USD
Networks payable on
Base (eip155:8453), Tempo (eip155:4217)
Protocol
rest

Calling it

The first call returns 402 Payment Required with the terms. Sign for those terms and retry the same request with the payment attached.

Example request

A real, working call — the request the service card verifies against.

curl -X POST https://agent.pocket.network/v1/pine-script-lint-v1/v1/integrity \
  -H 'content-type: application/json' \
  -d '{"source":"//@version=6\nindicator(\"y\")\nd = request.security(syminfo.tickerid, \"D\", close, lookahead=barmerge.lookahead_on)\nplot(d)\n"}'
Example response

The response this call returned, captured 2026-11-09 19:45:22 UTC.

{
  "portal": {
    "provenance": "third-party-supplier",
    "serviceId": "pine-script-lint-v1",
    "schemaCheck": "unchecked"
  },
  "data": {
    "schema": "pine-integrity-result/v1",
    "service": "pine-script-lint-v1",
    "linter_version": "0.2.1",
    "pine_version": 6,
    "declaration": {
      "kind": "indicator",
      "line": 2
    },
    "verdict": "FAIL",
    "counts": {
      "error": 1,
      "warning": 1,
      "info": 0
    },
    "findings": [
      {
        "code": "P007",
        "severity": "warning",
        "line": 3,
        "message": "request.security with lookahead_on repaints on historical bars"
      },
      {
        "code": "P201",
        "severity": "error",
        "line": 3,
        "message": "request.security(..., lookahead_on) without a [1]-style offset reads the future on historical bars"
      }
    ],
    "checks": [
      "future data (lookahead_on without offset)",
      "unconfirmed higher-timeframe values",
      "signals drawn in the past"
    ],
    "stats": {
      "lines": 5,
      "non_empty_lines": 4,
      "functions": 0,
      "inputs": 0,
      "plots": 1,
      "securities": 1,
      "alertconditions": 0
    },
    "scope": "static heuristics; it does not run the script and cannot prove the absence of repainting",
    "request_id": "r_38f123612775"
  }
}

Try it

Make one real paid call from your own wallet — about $0.005 on Base (eip155:8453). The wallet signs; nothing here holds a key. You'll see exactly what the service answers.

No browser wallet found. Install MetaMask, Rabby, or Coinbase Wallet to try a call here.

Supported methods

Methods the registry lists for this service. The portal forwards any call as sent; the supplier decides what it answers, and a delivered answer is settled.

Methods Pine Script Lint accepts, and whether each reads or writes.
MethodEffect
GET /v1/healthread
GET /v1/rulesread
GET /v1/versionread
POST /v1/integrityread
POST /v1/lintread

Schemas

Published by the service itself. The example above is generated from these.

Request schema
{
  "type": "object",
  "description": "The body of POST /v1/lint and POST /v1/integrity (integrity ignores conventions). GET /v1/rules lists every finding code with its severity.",
  "properties": {
    "source": {
      "type": "string",
      "maxLength": 204800,
      "description": "The Pine Script source, up to 200 KiB."
    },
    "conventions": {
      "type": "boolean",
      "description": "Lint only. Also report style conventions; default false."
    }
  },
  "required": [
    "source"
  ]
}
Response schema
{
  "type": "object",
  "description": "POST /v1/lint answers pine-lint-result/v1 (verdict CLEAN, WARN or FAIL, counts, findings with code, severity, line and message, stats); POST /v1/integrity answers pine-integrity-result/v1 (verdict, counts, findings, checks). Every response is a JSON object."
}