Brighter

Browse, backtest and write rule-based portfolios of tokenized US stocks.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
91%
이름 품질
91%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,354토큰 (도구 정의)
~938 B일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.06%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "brighter": {
      "url": "https://mcp.brighter.fi/mcp"
    }
  }
}

원격 엔드포인트

https://mcp.brighter.fi/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (11)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢list_strategies(assets, beatsBenchmark, cadence, leveraged, limit, ...)

List the strategies published on brighter.fi, newest or best-performing first. Each carries its rebalance cadence, the assets it can hold, and its return over the chosen period against its benchmark. Strategies that can hold leveraged or inverse funds are excluded unless asked for.

입력 스키마

{
  "type": "object",
  "properties": {
    "assets": {
      "description": "Only strategies that can hold any of these tickers.",
      "items": {
        "type": "string"
      },
      "maxItems": 30,
      "type": "array"
    },
    "beatsBenchmark": {
      "description": "Only strategies ahead of their benchmark over the period.",
      "type": "boolean"
    },
    "cadence": {
      "description": "Only these rebalance cadences.",
      "items": {
        "enum": [
          "daily",
          "weekly",
          "monthly"
        ],
        "type": "string"
      },
      "maxItems": 3,
      "type": "array"
    },
    "leveraged": {
      "description": "Include strategies that can hold leveraged or inverse funds. Off by default.",
      "type": "boolean"
    },
    "limit": {
      "description": "How many to return.",
      "maximum": 24,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "description": "Where to start, for paging.",
      "maximum": 10000,
      "minimum": 0,
      "type": "integer"
    },
    "period": {
      "description": "Window the returns cover.",
      "enum": [
        "1y",
        "3y",
        "5y"
      ],
      "type": "string"
    },
    "sort": {
      "description": "Order of the list.",
      "enum": [
        "return",
        "newest"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
🟢get_strategy(id)

One strategy in full: what its rule does, the parameters you can tune with their ranges and defaults, every asset it can hold, and its benchmark. Use the parameter keys with backtest_strategy.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Strategy id, as list_strategies returns it.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
⚪backtest_strategy(id, params, range)

Run a published strategy over real market history with parameters of your choosing. Returns its figures against its benchmark. Values outside a parameter's range are snapped into it. This is a real backtest, so make each one count.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Strategy id.",
      "type": "string"
    },
    "params": {
      "additionalProperties": {
        "type": "number"
      },
      "description": "Parameter values by key, from get_strategy. Omitted keys use their default.",
      "type": "object"
    },
    "range": {
      "description": "Backtest window. Only these are kept warm; anything else is refused.",
      "enum": [
        "1y",
        "3y",
        "5y"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢get_allocation(id, params)

What a published strategy's rule holds right now, in basis points of the portfolio. This is the live target, computed from the latest close.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Strategy id.",
      "type": "string"
    },
    "params": {
      "additionalProperties": {
        "type": "number"
      },
      "description": "Parameter values by key. Omitted keys use their default.",
      "type": "object"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢find_assets(limit, offset, query, tickers)

Search the assets a Brighter strategy can hold — tokenized US stocks, ETFs and T-bills. A rule may only name a ticker that appears here.

입력 스키마

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "How many to return.",
      "maximum": 30,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "description": "Where to start.",
      "maximum": 1000,
      "minimum": 0,
      "type": "integer"
    },
    "query": {
      "description": "Match against ticker or company name.",
      "type": "string"
    },
    "tickers": {
      "description": "Look up these exact tickers.",
      "items": {
        "type": "string"
      },
      "maxItems": 30,
      "type": "array"
    }
  },
  "additionalProperties": false
}
⚪asset_history(ticker, year)

Daily closing prices for one asset over a calendar year, for checking a rule's premise against what actually happened.

입력 스키마

{
  "type": "object",
  "properties": {
    "ticker": {
      "description": "Asset ticker, as find_assets returns it.",
      "type": "string"
    },
    "year": {
      "description": "Calendar year.",
      "maximum": 2100,
      "minimum": 2000,
      "type": "integer"
    }
  },
  "required": [
    "ticker",
    "year"
  ],
  "additionalProperties": false
}
🟡dsl_reference(indicators, limits)

How to write a Brighter strategy: the language's blocks, indentation rules, indicators and limits. Read this before writing any rule — the language is small and specific, and guessing its syntax wastes a turn.

입력 스키마

{
  "type": "object",
  "properties": {
    "indicators": {
      "description": "Include the full indicator table with every measure's syntax. Off by default; the reference already names them.",
      "type": "boolean"
    },
    "limits": {
      "description": "Include the numeric limits a rule must stay inside.",
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
🟡strategy_schema

The JSON schema for a strategy as an object, for when you would rather build the rule tree than write the text. check_strategy and backtest_code both accept text, which is usually easier.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢check_strategy(code)

Check a strategy written in Brighter's language: syntax, semantics, and whether every ticker it names is one Brighter can actually trade. Returns the faults with their line and column. Costs nothing and calls nothing upstream — check before you backtest.

입력 스키마

{
  "type": "object",
  "properties": {
    "code": {
      "description": "The strategy, in Brighter's language.",
      "type": "string"
    }
  },
  "required": [
    "code"
  ],
  "additionalProperties": false
}
⚪format_strategy(code)

Rewrite a strategy in the language's canonical form — the spelling Studio's editor shows. Useful for checking that what you wrote means what you think it means.

입력 스키마

{
  "type": "object",
  "properties": {
    "code": {
      "description": "The strategy, in Brighter's language.",
      "type": "string"
    }
  },
  "required": [
    "code"
  ],
  "additionalProperties": false
}
🟢backtest_code(code, range)

Run a strategy you have written against real market history and return its figures. This is a real backtest against real prices — not a simulation and not cached per call — so run it deliberately, after check_strategy passes. Returns metrics only, never the curve.

입력 스키마

{
  "type": "object",
  "properties": {
    "code": {
      "description": "The strategy, in Brighter's language.",
      "type": "string"
    },
    "range": {
      "description": "Window to test over.",
      "enum": [
        "1y",
        "3y",
        "5y"
      ],
      "type": "string"
    }
  },
  "required": [
    "code"
  ],
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 11개