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 |
|---|---|
| Python | pip install tickatlas |
| JavaScript / TypeScript | npm install tickatlas |
| PHP | composer require tickatlas/php-sdk |
| Go | go 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:
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
Python
Available
Sync TickAtlas and async AsyncTickAtlas clients, fully type-hinted
(ships py.typed). Python 3.9+.
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
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
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.
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
AvailablePSR-4 autoloaded, Composer package, PHP 8.1+. Readonly DTOs and enums for every response.
<?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
Available
Idiomatic module, standard library only (zero dependencies). Functional options,
context.Context on every call, typed results and errors. Go 1.21+.
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 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:
pip install "git+https://github.com/abuzant/tickatlas-skills.git#subdirectory=mcp-server" {
"mcpServers": {
"tickatlas": {
"command": "tickatlas-mcp",
"env": { "TICKATLAS_API_KEY": "tk_your_key_here" }
}
}
} Any shell agent (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.