← Developers
MCP Server
Pro required

Mount Chartai as a native AI tool.
Zero wrapper code.

Model Context Protocol v1.0 server. Compatible with Claude Desktop, Cursor, OpenAI Agents SDK, and any MCP-enabled host. 4 tools exposed.

Get Pro API key →View tools
Quick start

Up in 3 minutes

01
Get your API key
Sign up for Pro and generate an API key from /app/api-keys.
02
Add to Claude Desktop config
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
  "mcpServers": {
    "chartai": {
      "url": "https://api.chartai.live/mcp/v1",
      "apiKey": "sk-chartai-<YOUR_KEY>",
      "transport": "http"
    }
  }
}
03
Or use Cursor / OpenAI Agents
MCP v1.0 compatible — works with any MCP-enabled host:
# Cursor settings.json
{
  "mcp": {
    "servers": {
      "chartai": {
        "url": "https://api.chartai.live/mcp/v1",
        "apiKey": "sk-chartai-<YOUR_KEY>"
      }
    }
  }
}
04
Your agent calls tools natively
No wrapper code needed. Claude calls scan_symbol as a first-class tool:
User: Scan BTC on 4h and tell me if there's a pattern

Claude: [calls chartai:scan_symbol({ symbol: "BTCUSDT", tf: "4h" })]
→ Found: Bullish Bat (harmonic) — entry 76,200, target 80,400, stop 73,800
  Confidence: 0.87 | Detected 23 min ago
Tool reference

4 MCP tools available

scan_symbol

Scan a trading symbol for harmonic and chart patterns on a given timeframe.

Parameters
NameTypeRequiredDescription
symbolstringrequirede.g. BTCUSDT, AAPL, EURUSD
tfstringrequired5m | 15m | 1h | 4h | 1d | 1w | 1M
patternsstringoptionalComma-separated pattern IDs, or "all"
Returns: { patterns: PatternResult[], quota_remaining: number }
list_patterns

List all supported pattern types with descriptions and detection rules.

Parameters
NameTypeRequiredDescription
categorystringoptionalreversal | continuation | harmonic
Returns: { patterns: PatternMeta[] }
get_record

Retrieve a historical signal record by ID, including entry, target, stop, and outcome.

Parameters
NameTypeRequiredDescription
record_idstringrequirede.g. R-2389
Returns: { record: SignalRecord }
list_records

List recent signal records with optional filters.

Parameters
NameTypeRequiredDescription
symbolstringoptionalFilter by asset symbol
outcomestringoptionalwin | loss | open
limitnumberoptionalMax results (default 20, max 100)
Returns: { records: SignalRecord[], total: number }
SDK examples

Call via MCP SDK directly

Python
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    server_params = StdioServerParameters(
        command="chartai-mcp",
        args=["--api-key", "sk-chartai-<YOUR_KEY>"],
    )
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List available tools
            tools = await session.list_tools()

            # Scan BTCUSDT on 4h
            result = await session.call_tool(
                "scan_symbol",
                {"symbol": "BTCUSDT", "tf": "4h"},
            )
            print(result.content)

asyncio.run(main())
JavaScript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { HttpClientTransport } from "@modelcontextprotocol/sdk/client/http.js";

const client = new Client({ name: "my-app", version: "1.0.0" });

await client.connect(
  new HttpClientTransport({
    url: new URL("https://api.chartai.live/mcp/v1"),
    requestInit: {
      headers: { "X-API-Key": "sk-chartai-<YOUR_KEY>" },
    },
  })
);

const result = await client.callTool({
  name: "scan_symbol",
  arguments: { symbol: "BTCUSDT", tf: "4h" },
});

console.log(result.content);

Ready to plug Chartai into your AI agent?

Pro plan required. 14-day free trial, cancel anytime.