TickAtlas

SDKs & Libraries

Official, open-source client libraries for Python, JavaScript/TypeScript, PHP, and Go, plus a ready-made AI-agent integration (MCP server & skill). Each SDK handles authentication, retries, rate-limit backoff, and error handling for you, and ships typed models for every response.

Install

Language Install
Pythonpip install tickatlas
JavaScript / TypeScriptnpm install tickatlas
PHPcomposer require tickatlas/php-sdk
Gogo get github.com/abuzant/tickatlas-sdk/go

Authentication

Every SDK reads your API key from the TICKATLAS_API_KEY environment variable (or you can pass it explicitly to the constructor). Create a key in your dashboard, then:

shell
export TICKATLAS_API_KEY="tk_your_key_here"

The base URL defaults to https://tickatlas.com/v1 and is overridable via a constructor option or TICKATLAS_BASE_URL. No SDK ever logs, prints, or persists your key.

What every SDK gives you

Typed responses — every endpoint returns a strongly-typed model

Typed errors — auth, permission, validation, rate-limit, and server errors as distinct types

Automatic retries with exponential backoff; honours Retry-After on 429

Rate-limit aware — reads the X-RateLimit-* headers and X-Request-ID

Reads your key from the TICKATLAS_API_KEY environment variable

Covers all 21 v1 endpoints; MIT licensed

PY

Python

Available

Sync TickAtlas and async AsyncTickAtlas clients, fully type-hinted (ships py.typed). Python 3.9+.

quickstart.py
from tickatlas import TickAtlas

# Reads the TICKATLAS_API_KEY environment variable (or pass api_key=...)
client = TickAtlas()

# Single indicator
rsi = client.get_indicator("EURUSD", "RSI_14", timeframe="H1")
print(rsi.value, rsi.signal)

# Market-bias summary across all 42 indicators
summary = client.get_summary("EURUSD", timeframe="H1")
print(summary.bias, summary.confidence)

# Screen the majors for oversold RSI
hits = client.screen("RSI_14", max_val=30, timeframe="H1")
for r in hits.results:
    print(r.symbol, r.value)

Async

async.py
import asyncio
from tickatlas import AsyncTickAtlas

async def main():
    async with AsyncTickAtlas() as client:
        quote = await client.get_quote("EURUSD")
        print(quote.bid, quote.ask, quote.spread_pips)

asyncio.run(main())

Source & full reference: github.com/abuzant/tickatlas-sdk/python

JS

JavaScript / TypeScript

Available

TypeScript source with full type definitions; ESM + CommonJS builds; zero runtime dependencies (uses the platform fetch). Works in Node 18+ and the browser.

quickstart.ts
import { TickAtlas } from "tickatlas";

// Reads process.env.TICKATLAS_API_KEY (or pass { apiKey })
const client = new TickAtlas();

const rsi = await client.getIndicator("EURUSD", "RSI_14", { timeframe: "H1" });
console.log(rsi.value, rsi.signal);

const heatmap = await client.getHeatmap({ type: "strength", timeframe: "H4" });
console.log("Strongest:", heatmap.strongest, "Weakest:", heatmap.weakest);

const quotes = await client.getQuotes(["EURUSD", "GBPUSD", "XAUUSD"]);
console.log(quotes.count, quotes.quotes);

Source & full reference: github.com/abuzant/tickatlas-sdk/javascript

PHP

PHP

Available

PSR-4 autoloaded, Composer package, PHP 8.1+. Readonly DTOs and enums for every response.

quickstart.php
<?php
require 'vendor/autoload.php';

use TickAtlas\Client;

// Reads the TICKATLAS_API_KEY environment variable (or pass it explicitly)
$client = new Client();

$rsi = $client->getIndicator('EURUSD', 'RSI_14', ['timeframe' => 'H1']);
echo "RSI: {$rsi->value} ({$rsi->signal})\n";

$summary = $client->getSummary('EURUSD', 'H1');
echo "Bias: {$summary->bias} @ {$summary->confidence}\n";

Source & full reference: github.com/abuzant/tickatlas-sdk/php

GO

Go

Available

Idiomatic module, standard library only (zero dependencies). Functional options, context.Context on every call, typed results and errors. Go 1.21+.

main.go
package main

import (
    "context"
    "fmt"
    "log"

    tickatlas "github.com/abuzant/tickatlas-sdk/go"
)

func main() {
    client, err := tickatlas.NewClient() // reads TICKATLAS_API_KEY
    if err != nil {
        log.Fatal(err)
    }

    rsi, err := client.Indicator(context.Background(), "EURUSD", tickatlas.RSI14,
        &tickatlas.IndicatorParams{Timeframe: tickatlas.TimeframeH1})
    if err != nil {
        log.Fatal(err)
    }
    if rsi.Value != nil {
        fmt.Printf("RSI(14) = %.2f\n", *rsi.Value)
    }
}

Source & full reference: github.com/abuzant/tickatlas-sdk/go

AI

AI Agents (Claude, Cursor, MCP)

Available

Let an AI assistant query live market data on your behalf. The integration repo ships a Model Context Protocol (MCP) server that exposes the API as agent tools, a Claude Agent Skill (SKILL.md), and a zero-dependency CLI for any shell-capable agent.

Claude Desktop / Claude Code (MCP)

Install the server, then add it to your MCP config:

install
pip install "git+https://github.com/abuzant/tickatlas-skills.git#subdirectory=mcp-server"
claude_desktop_config.json
{
  "mcpServers": {
    "tickatlas": {
      "command": "tickatlas-mcp",
      "env": { "TICKATLAS_API_KEY": "tk_your_key_here" }
    }
  }
}

Any shell agent (CLI)

cli
# Zero-dependency CLI — works in any shell-capable agent (Codex, CI, etc.)
export TICKATLAS_API_KEY=tk_your_key_here
python scripts/tickatlas_cli.py quote EURUSD
python scripts/tickatlas_cli.py summary EURUSD H1
python scripts/tickatlas_cli.py screener RSI_14 --max-val 30

Full setup for Claude Desktop, Claude Code, Cursor, and generic MCP clients: github.com/abuzant/tickatlas-skills

No SDK for your language?

The REST API works with any HTTP client — send your key in the X-API-Key header to https://tickatlas.com/v1. See the API reference for every endpoint, parameter, and response shape.

All SDKs are open source under the MIT license. Issues and contributions are welcome on GitHub.