tckr 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. tckr-0.1.0/CHANGELOG.md +71 -0
  2. tckr-0.1.0/LICENSE +21 -0
  3. tckr-0.1.0/MANIFEST.in +8 -0
  4. tckr-0.1.0/PKG-INFO +193 -0
  5. tckr-0.1.0/README.md +144 -0
  6. tckr-0.1.0/pyproject.toml +97 -0
  7. tckr-0.1.0/setup.cfg +4 -0
  8. tckr-0.1.0/tckr/__init__.py +54 -0
  9. tckr-0.1.0/tckr/__main__.py +6 -0
  10. tckr-0.1.0/tckr/_http.py +83 -0
  11. tckr-0.1.0/tckr/agent_toolkit/__init__.py +39 -0
  12. tckr-0.1.0/tckr/agent_toolkit/adapters/__init__.py +7 -0
  13. tckr-0.1.0/tckr/agent_toolkit/adapters/claude_sdk.py +88 -0
  14. tckr-0.1.0/tckr/agent_toolkit/adapters/langchain.py +89 -0
  15. tckr-0.1.0/tckr/agent_toolkit/adapters/mcp_stdio.py +92 -0
  16. tckr-0.1.0/tckr/agent_toolkit/adapters/openai.py +118 -0
  17. tckr-0.1.0/tckr/agent_toolkit/core.py +1169 -0
  18. tckr-0.1.0/tckr/alchemy.py +258 -0
  19. tckr-0.1.0/tckr/birdeye.py +287 -0
  20. tckr-0.1.0/tckr/cache.py +49 -0
  21. tckr-0.1.0/tckr/clanker.py +317 -0
  22. tckr-0.1.0/tckr/cli.py +259 -0
  23. tckr-0.1.0/tckr/coinalyze.py +425 -0
  24. tckr-0.1.0/tckr/coingecko.py +225 -0
  25. tckr-0.1.0/tckr/defillama.py +363 -0
  26. tckr-0.1.0/tckr/dexscreener.py +255 -0
  27. tckr-0.1.0/tckr/etherscan.py +233 -0
  28. tckr-0.1.0/tckr/geckoterminal.py +253 -0
  29. tckr-0.1.0/tckr/goplus.py +365 -0
  30. tckr-0.1.0/tckr/helius.py +342 -0
  31. tckr-0.1.0/tckr/honeypot.py +119 -0
  32. tckr-0.1.0/tckr/hyperliquid.py +196 -0
  33. tckr-0.1.0/tckr/jito.py +332 -0
  34. tckr-0.1.0/tckr/lp_lock.py +678 -0
  35. tckr-0.1.0/tckr/lunarcrush.py +103 -0
  36. tckr-0.1.0/tckr/messari.py +109 -0
  37. tckr-0.1.0/tckr/neynar.py +412 -0
  38. tckr-0.1.0/tckr/polymarket.py +160 -0
  39. tckr-0.1.0/tckr/pumpfun.py +790 -0
  40. tckr-0.1.0/tckr/pyth.py +162 -0
  41. tckr-0.1.0/tckr/registry.py +361 -0
  42. tckr-0.1.0/tckr/settings.py +163 -0
  43. tckr-0.1.0/tckr/solscan.py +139 -0
  44. tckr-0.1.0/tckr/thegraph.py +128 -0
  45. tckr-0.1.0/tckr/tokenterminal.py +112 -0
  46. tckr-0.1.0/tckr/virtuals.py +256 -0
  47. tckr-0.1.0/tckr/wallet_pnl.py +467 -0
  48. tckr-0.1.0/tckr.egg-info/PKG-INFO +193 -0
  49. tckr-0.1.0/tckr.egg-info/SOURCES.txt +51 -0
  50. tckr-0.1.0/tckr.egg-info/dependency_links.txt +1 -0
  51. tckr-0.1.0/tckr.egg-info/entry_points.txt +3 -0
  52. tckr-0.1.0/tckr.egg-info/requires.txt +28 -0
  53. tckr-0.1.0/tckr.egg-info/top_level.txt +1 -0
@@ -0,0 +1,71 @@
1
+ # Changelog
2
+
3
+ All notable changes to `tckr` are documented here. Format roughly follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow
5
+ [SemVer](https://semver.org/).
6
+
7
+ ## [Unreleased]
8
+
9
+ ### Added
10
+ - Capability / tier registry (`tckr.registry`): per-module tier
11
+ (`keyless-free` / `keyed-free` / `keyed-paid`), required env vars, and an
12
+ `is_configured()` check. Drives MCP tool descriptions, CLI status, and the
13
+ `capabilities` introspection tool.
14
+ - Agent toolkit (`tckr.agent_toolkit`) — extracted from the
15
+ Market-Research-Comp sibling project and refactored into a platform-neutral
16
+ core + per-platform adapters:
17
+ - `agent_toolkit.core` — 20+ tool functions and `ToolSpec` registry; no SDK deps.
18
+ - `adapters/claude_sdk` — Claude Agent SDK in-process MCP server (`tckr[agent-claude]`).
19
+ - `adapters/mcp_stdio` — universal MCP stdio server, console-script `tckr-mcp`
20
+ (`tckr[agent-mcp]`). Works with any MCP-compatible client.
21
+ - `adapters/openai` — OpenAI function-calling shape (`tckr[agent-openai]`).
22
+ - `adapters/langchain` — LangChain `StructuredTool` wrappers (`tckr[agent-langchain]`).
23
+
24
+ ## [0.1.0] — 2026-05-24
25
+
26
+ First tagged release. Inventory of what shipped during the build-up
27
+ (2026-05-22 through 2026-05-24):
28
+
29
+ ### Added — data-source modules
30
+
31
+ - `geckoterminal` — DEX pools, tokens by contract, OHLCV (Base / Solana / ETH). Keyless.
32
+ - `dexscreener` — DEX pairs, search, latest token profiles, paid-boost rankings. Keyless.
33
+ - `hyperliquid` — single-exchange perps: funding, OI, marks. Keyless.
34
+ - `defillama` — chain/protocol TVL, DEX volume, stablecoins, yields. Keyless.
35
+ - `coinalyze` — cross-exchange perps aggregator (funding spread, OI, liquidations
36
+ across Binance / Bybit / OKX / Hyperliquid). Requires `COINALYZE_API_KEY` (free).
37
+ - `goplus` — EVM token contract security scans (honeypot detection, taxes, owner
38
+ privileges, holder distribution). Keyless.
39
+ - `honeypot` — sell-simulation backstop on ETH / BSC / Base. Keyless.
40
+ - `birdeye` — Solana-focused token analytics (overview, top holders, security).
41
+ Requires `BIRDEYE_API_KEY` (free tier).
42
+ - `pumpfun` — Solana memecoin launchpad. Discovery (new / about-to-bond /
43
+ graduated) via Moralis or Bitquery; on-chain bonding-curve state via Helius.
44
+ Adds Bitquery-exclusive analytics (top_traders, live_trades, migration_events,
45
+ curve_trajectory, holder_distribution). Requires `MORALIS_API_KEY` or
46
+ `BITQUERY_API_KEY` for discovery; `HELIUS_API_KEY` for state.
47
+ - `neynar` — Farcaster API (cast search, channel feeds, trending fungibles).
48
+ Requires `NEYNAR_API_KEY`; most endpoints require paid tier as of 2026-05.
49
+ - `wallet_pnl` — FIFO PnL across Solana + Base wallets. Auto-resolves ATA →
50
+ owner. Per-token realized + unrealized USD; filters wSOL/WETH/stables.
51
+ Composite — reuses Helius / Alchemy / Moralis / Birdeye keys.
52
+ - `lp_lock` — LP-lock detection for Uniswap V2 pairs, V3 positions, V4 positions
53
+ on Base / ETH. Auto-detects pool type from input shape. Covers UNCX V2/V3/V4
54
+ and Team Finance ETH lockers. Requires `ALCHEMY_API_KEY` (free).
55
+ - `virtuals` — Virtuals Protocol AI-agent launchpad on Base. Tracks the
56
+ 42K-VIRTUAL bonding-curve graduation threshold. Keyless.
57
+ - `clanker` — Clanker Farcaster-native token launcher (Base, multi-chain).
58
+ Carries `requestor_fid` for direct cross-link with `neynar`. Keyless.
59
+ - `jito` — Solana MEV intel. `tip_floor`, `bundle_status`, and the headline
60
+ `snipe_score(sigs)` — feeds e.g. `pumpfun.live_trades` signatures to quantify
61
+ bot-sniping intensity on a launch. Uses `HELIUS_API_KEY`.
62
+ - `alchemy` — EVM (Base, ETH) wallet balances + transfers. Requires `ALCHEMY_API_KEY`.
63
+ - `helius` — Solana RPC convenience layer. Requires `HELIUS_API_KEY`.
64
+
65
+ ### Added — infrastructure
66
+
67
+ - `_http` — shared httpx-based fetch helper with retry on 429/5xx.
68
+ - `cache` — async TTL cache, instantiated per-module.
69
+ - `settings` — env-driven config (API keys + per-source TTLs), no other deps.
70
+ - `cli` — `tckr <subcommand>` for ad-hoc queries (dex / token / perps /
71
+ tvl / wallet).
tckr-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tckr contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
tckr-0.1.0/MANIFEST.in ADDED
@@ -0,0 +1,8 @@
1
+ include README.md
2
+ include LICENSE
3
+ include CHANGELOG.md
4
+ include pyproject.toml
5
+ recursive-include tckr *.py
6
+ recursive-exclude tests *
7
+ recursive-exclude * __pycache__
8
+ recursive-exclude * *.py[co]
tckr-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,193 @@
1
+ Metadata-Version: 2.4
2
+ Name: tckr
3
+ Version: 0.1.0
4
+ Summary: Async, cached, gracefully-degrading aggregator over the major free crypto data APIs (DEX, perps, TVL, on-chain, social, launchpads, MEV) — plus an agent toolkit that exposes the data to any LLM platform via MCP, the Claude Agent SDK, OpenAI function calling, or LangChain.
5
+ Author: tckr contributors
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/tckr-org/tckr
8
+ Project-URL: Repository, https://github.com/tckr-org/tckr
9
+ Project-URL: Issues, https://github.com/tckr-org/tckr/issues
10
+ Project-URL: Changelog, https://github.com/tckr-org/tckr/blob/main/CHANGELOG.md
11
+ Keywords: crypto,defi,dex,perps,tvl,solana,base,ethereum,hyperliquid,geckoterminal,dexscreener,defillama,coinalyze,agent,mcp,llm,claude,openai,langchain
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Financial and Insurance Industry
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Office/Business :: Financial
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Framework :: AsyncIO
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: httpx>=0.27
28
+ Requires-Dist: solders>=0.21
29
+ Requires-Dist: eth-abi>=5.0
30
+ Requires-Dist: eth-hash[pycryptodome]>=0.7
31
+ Provides-Extra: agent-claude
32
+ Requires-Dist: claude-agent-sdk>=0.1; extra == "agent-claude"
33
+ Provides-Extra: agent-mcp
34
+ Requires-Dist: mcp>=1.0; extra == "agent-mcp"
35
+ Provides-Extra: agent-openai
36
+ Requires-Dist: openai>=1.40; extra == "agent-openai"
37
+ Provides-Extra: agent-langchain
38
+ Requires-Dist: langchain-core>=0.3; extra == "agent-langchain"
39
+ Provides-Extra: agent
40
+ Requires-Dist: tckr[agent-claude,agent-mcp]; extra == "agent"
41
+ Provides-Extra: agent-all
42
+ Requires-Dist: tckr[agent-claude,agent-langchain,agent-mcp,agent-openai]; extra == "agent-all"
43
+ Provides-Extra: dev
44
+ Requires-Dist: pytest>=8; extra == "dev"
45
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
46
+ Requires-Dist: ruff>=0.6; extra == "dev"
47
+ Requires-Dist: build>=1.2; extra == "dev"
48
+ Dynamic: license-file
49
+
50
+ # tckr
51
+
52
+ A reusable async crypto data layer. Stitches together free (and free-tier) public
53
+ APIs into one clean, cached, typed interface — built to be `pip install -e`'d
54
+ into multiple local projects rather than copy-pasted between them.
55
+
56
+ Every call is async, cached per-source (TTL), and degrades gracefully — a dead
57
+ or rate-limited upstream returns `None` / `[]` rather than raising. Modules that
58
+ need an API key log a warning and return empty when the key is absent rather
59
+ than crashing the caller.
60
+
61
+ ## Sources
62
+
63
+ | Module | Source | Key? | Provides |
64
+ |---|---|---|---|
65
+ | `geckoterminal` | GeckoTerminal API v2 | no | DEX pools, tokens by contract address, OHLCV (Base, Solana, ETH, …) |
66
+ | `dexscreener` | Dexscreener API | no | DEX pairs, search, latest token profiles, paid-boost rankings |
67
+ | `hyperliquid` | Hyperliquid API | no | Single-exchange perps: funding, open interest, marks |
68
+ | `coinalyze` | Coinalyze API | free key | Cross-exchange perps: funding spread, OI, liquidations across Binance/Bybit/OKX/Hyperliquid/etc |
69
+ | `defillama` | DefiLlama API | no | Chain/protocol TVL, DEX volume, stablecoins, yields |
70
+ | `goplus` | GoPlus Security API | no | EVM token contract security scans (honeypot detection, taxes, owner privileges, holder dist) |
71
+ | `honeypot` | honeypot.is API | no | EVM sell-simulation backstop (ETH / BSC / Base) — actually attempts a swap to verify exit |
72
+ | `birdeye` | Birdeye public API | free key | Solana-focused token analytics: overview, top holders, trader PnL, security |
73
+ | `pumpfun` | Moralis / Bitquery (discovery + analytics) + Helius (state) | free key(s) | Solana memecoin launchpad. Discovery: new / about-to-bond / graduated lists. On-chain: bonding-curve state via SPL balance. Bitquery-exclusive analytics: top_traders, live_trades, migration_events, curve_trajectory, holder_distribution. |
74
+ | `neynar` | Neynar (Farcaster) | paid for most | Cast search, channel feeds, trending casts + fungibles, KOL helpers. 8 functions wired; only `user_by_username` works on free tier as of May 2026 — others return 402 until upgrade (degrade gracefully). |
75
+ | `wallet_pnl` | Helius (Solana) + Moralis (Base) + birdeye (prices) | uses existing keys | FIFO PnL across Sol+Base wallets. Auto-resolves ATA → owner. Per-token realized + unrealized USD. Filters wSOL/WETH/stables as counter assets by default. |
76
+ | `lp_lock` | Alchemy (EVM) | uses existing key | LP-lock detection for Uniswap V2 pairs, V3 positions, and V4 positions on Base / ETH. Auto-detects from input shape (40-hex-char address vs 64-hex-char PoolId). V2 returns `locked_pct`; V3/V4 return `n_locked_positions` + per-position detail. Covers UNCX V2, V3, V4 lockers; Team Finance on ETH. Team Finance Base + per-lock unlock_at are TODOs. |
77
+ | `virtuals` | api.virtuals.io | no key | Virtuals Protocol AI-agent launchpad on Base. `new_tokens` / `about_to_graduate` / `recently_graduated` / `genesis_launches` / `token_info`. Tracks the 42K-VIRTUAL bonding-curve graduation threshold. |
78
+ | `clanker` | clanker.world/api | no key | Clanker Farcaster-native token launcher (Base + multi-chain). `new_tokens` / `trending_tokens` / `tokens_by_fid` / `tokens_by_deployer` / `holders` / `token_info`. Carries `requestor_fid` for direct cross-link with [[neynar]]. |
79
+ | `jito` | block-engine.jito.wtf + Helius | uses HELIUS_API_KEY | Solana MEV intel. `tip_floor()`, `tip_accounts()`, `bundle_status()`, `inflight_bundle_status()`, `tx_jito_info(sig)`, `snipe_score(sigs)`. Killer use case: feed `pumpfun.live_trades` signatures into `snipe_score` to quantify how heavily a launch was bot-sniped. |
80
+ | `alchemy` | Alchemy RPC | free key | EVM (Base, ETH) on-chain wallet balances + transfers |
81
+ | `helius` | Helius RPC | free key | Solana RPC convenience layer (balances, transfers) |
82
+ | `coingecko` | CoinGecko v3 | no key (rate-limited) / free demo key / paid Pro | Canonical spot / market / historical prices; `simple_price`, `coin_markets`, `coin`, `market_chart`, `search`, `trending`, `global_stats`, `categories`. |
83
+ | `polymarket` | Polymarket Gamma API | no | Prediction-market odds (binary YES/NO). `markets`, `top_volume`, `market`, `events`. |
84
+ | `pyth` | Pyth Hermes | no | On-chain oracle prices for ~400 feeds (crypto, equities, FX, metals, rates). `feeds`, `latest_price`, `latest_price_for_symbols`. Sub-second cadence. |
85
+ | `etherscan` | Etherscan V2 | free key | Unified EVM block explorer across ~70 chains (ETH=1, Base=8453, Arb, Op, Polygon, BNB, ...). `balance`, `token_transfers`, `contract_source`, `contract_abi`, `gas_oracle`, `eth_supply`. Backwards-compat with `BASESCAN_API_KEY`. |
86
+ | `solscan` | Solscan | no (public) / free key (Pro) | Solana block explorer. Public endpoints (`token_meta`, `account_info`, `account_tokens`, `token_holders`, `tx_detail`) work keyless; `SOLSCAN_API_KEY` upgrades to Pro for richer parsing + higher RL. |
87
+ | `lunarcrush` | LunarCrush API4 | free key | Social-sentiment scoring: Galaxy Score, AltRank, social volume, topic feeds. `coins_list`, `coin`, `coin_time_series`, `topic`, `topics_list`. Free tier ~100 req/day. |
88
+ | `messari` | Messari API v1/v2 | paid (mostly) | Research-grade asset profiles, metrics, news. `asset`, `asset_metrics`, `asset_profile`, `news_feed`, `assets`. Most endpoints moved behind paid plans in 2024-2025. |
89
+ | `tokenterminal` | Token Terminal API v2 | paid (mostly) | Protocol fundamentals: revenue, fees, P/E, treasury. `projects`, `project`, `project_metrics`, `metric_history`, `market_sectors`. Free tier exposes catalog; historical series are paid. |
90
+ | `thegraph` | The Graph | no (public gateway, throttled) / free key (decentralized) | Generic GraphQL access to indexed subgraphs (Uniswap, Aave, Compound, Lido, etc.). `query_subgraph(id, query, vars)`, `uniswap_v3_top_pools`. |
91
+
92
+ ## Install
93
+
94
+ ```
95
+ pip install -e path/to/tckr
96
+ ```
97
+
98
+ ## Usage
99
+
100
+ ```python
101
+ import asyncio
102
+ from tckr import geckoterminal, coinalyze
103
+
104
+ async def main():
105
+ pools = await geckoterminal.trending_pools("base", limit=5)
106
+ for p in pools:
107
+ print(p["name"], p["price_usd"], p["volume_24h_usd"])
108
+
109
+ # Cross-exchange funding spread for one coin — the killer Coinalyze use case
110
+ agg = await coinalyze.funding_aggregate("BTC")
111
+ if agg:
112
+ a = agg["aggregate"]
113
+ print(f"BTC funding APR — min {a['min_apr_pct']:.1f}% "
114
+ f"max {a['max_apr_pct']:.1f}% spread {a['spread_apr_pct']:.1f}%")
115
+
116
+ asyncio.run(main())
117
+ ```
118
+
119
+ ## Configuration
120
+
121
+ All env vars are optional — modules without keys still work; modules with keys
122
+ no-op until set. See `tckr/settings.py` for the full list.
123
+
124
+ API keys (only needed for the modules that declare them in the table above):
125
+
126
+ - `COINALYZE_API_KEY` — free signup at coinalyze.net (no card).
127
+ - `BIRDEYE_API_KEY` — free tier at birdeye.so (~30 req/min on the endpoints used here).
128
+ - `MORALIS_API_KEY` — free tier at moralis.com; primary source for `pumpfun` discovery (`new_tokens`, `about_to_bond`, `recently_graduated`).
129
+ - `BITQUERY_API_KEY` — free tier at bitquery.io; fallback for `pumpfun.new_tokens` (Bitquery has the richest Pump.fun-specific schema). Either Moralis or Bitquery alone gets you working discovery. On-chain `bonding_state` only needs `HELIUS_API_KEY`. Also unlocks the 5 Bitquery-exclusive analytics functions (top_traders, live_trades, migration_events, curve_trajectory, holder_distribution).
130
+ - `NEYNAR_API_KEY` — free signup at dev.neynar.com. As of May 2026 the free tier only includes `user_by_username` — `search_casts`, `channel_feed`, `trending_fungibles` and the other 5 require a paid plan.
131
+ - `ALCHEMY_API_KEY` — free tier covers Base + ETH at app.alchemy.com.
132
+ - `HELIUS_API_KEY` — free tier at helius.dev.
133
+ - `BASESCAN_API_KEY` — currently declared but not consumed by any shipped module; reserved for the planned etherscan/basescan module.
134
+ - `COINGECKO_API_KEY` — CoinGecko Pro plan (paid). Uses `pro-api.coingecko.com` and unlocks Pro-only endpoints + 500 req/min+.
135
+ - `COINGECKO_DEMO_API_KEY` — CoinGecko Demo plan (free signup). Same public endpoints with a slightly higher rate-limit than no-key.
136
+ - `ETHERSCAN_API_KEY` — Etherscan V2 (free signup at etherscan.io). One key works across all V2-supported chains via the `chainid` parameter (ETH, Base, Arbitrum, Optimism, Polygon, BNB, Avalanche, zkSync, ...). The legacy `BASESCAN_API_KEY` env is also accepted as a fallback.
137
+ - `SOLSCAN_API_KEY` — Solscan Pro (paid). Public endpoints work without it.
138
+ - `LUNARCRUSH_API_KEY` — required for any LunarCrush call. Free signup at lunarcrush.com (~100 req/day on free tier).
139
+ - `MESSARI_API_KEY` — Messari. Free 'Hobbyist' tier limited to ~20 req/min on a small subset; most useful endpoints are paid (Pro / Enterprise).
140
+ - `TOKENTERMINAL_API_KEY` — Token Terminal. Free tier covers project catalog + limited metrics; full historical series + most metrics are paid.
141
+ - `THEGRAPH_API_KEY` — optional. Without it the public gateway is used (heavily throttled); with it the decentralized network gateway gives much higher quota.
142
+
143
+ Cache TTLs (override only if you know why):
144
+
145
+ - `TCKR_DEX_TTL_S`, `TCKR_DEX_OHLCV_TTL_S`, `TCKR_PERPS_TTL_S`,
146
+ `TCKR_TVL_TTL_S`, `TCKR_ONCHAIN_TTL_S`, `TCKR_FUNDING_AGG_TTL_S`,
147
+ `TCKR_LIQUIDATION_TTL_S`, `TCKR_SECURITY_TTL_S`,
148
+ `TCKR_HONEYPOT_TTL_S`, `TCKR_BIRDEYE_TTL_S`, `TCKR_TOKEN_METADATA_TTL_S`,
149
+ `TCKR_COINGECKO_TTL_S` (default 30), `TCKR_COINGECKO_HISTORY_TTL_S` (default 600),
150
+ `TCKR_POLYMARKET_TTL_S` (default 30),
151
+ `TCKR_PYTH_PRICE_TTL_S` (default 10), `TCKR_PYTH_CATALOG_TTL_S` (default 3600),
152
+ `TCKR_ETHERSCAN_TTL_S` (default 30), `TCKR_ETHERSCAN_CONTRACT_TTL_S` (default 86400),
153
+ `TCKR_ETHERSCAN_GAS_TTL_S` (default 15), `TCKR_ETHERSCAN_STATS_TTL_S` (default 600),
154
+ `TCKR_SOLSCAN_TTL_S` (default 60),
155
+ `TCKR_LUNARCRUSH_TTL_S` (default 120),
156
+ `TCKR_MESSARI_TTL_S` (default 300),
157
+ `TCKR_TOKENTERMINAL_TTL_S` (default 300), `TCKR_TOKENTERMINAL_HISTORY_TTL_S` (default 3600),
158
+ `TCKR_THEGRAPH_TTL_S` (default 60).
159
+
160
+ HTTP behavior:
161
+
162
+ - `TCKR_HTTP_TIMEOUT_S` (default 15.0), `TCKR_HTTP_MAX_RETRIES` (default 2).
163
+
164
+ ## New-pair / early-stage strategies (Sol + Base)
165
+
166
+ The thesis: the highest-asymmetry crypto trades are early entries on new
167
+ tokens that grow. The full toolkit for that is now shipped — `pumpfun` and
168
+ `virtuals` / `clanker` cover discovery on each chain's dominant launchpad;
169
+ `bonding_state` + `lp_lock` cover safety; `wallet_pnl` covers smart-money
170
+ tracking; `jito` quantifies bot-sniping intensity; `neynar` adds the
171
+ Farcaster social signal on Base. The modules compose:
172
+
173
+ - `pumpfun.live_trades(mint)` signatures → `jito.snipe_score(sigs)` →
174
+ "how bot-sniped is this launch?"
175
+ - `clanker.new_tokens()` `requestor_fid` → `neynar.user_popular_casts(fid)` →
176
+ "what is this deployer saying about their token?"
177
+ - `clanker.new_tokens()` `pool_address` (V4 PoolId) → `lp_lock(pool_id)` →
178
+ "is this Clanker token's LP locked?"
179
+ - `pumpfun.top_traders(mint)` wallets → `wallet_pnl(wallet)` → "is the top
180
+ buyer of this token actually profitable across their other trades?"
181
+
182
+ Future open items (no fixed timeline): per-lock `unlock_at` decoding for
183
+ UNCX V2/V3/V4, Team Finance Base address, V3/V4 USD-value-of-locked-liquidity
184
+ (needs tick math), neynar paid-tier endpoints when budgeted.
185
+
186
+ ## Consumers
187
+
188
+ `tckr` is currently consumed by:
189
+
190
+ - **Market-Research-Comp** (sibling repo) — uses the fundamental-trading subset
191
+ (`geckoterminal`, `dexscreener` basics, `hyperliquid`, `coinalyze`, `defillama`).
192
+ Contract-safety + Solana-analytics modules ship in the library but are not
193
+ exposed to those agents — reserved for the future new-pair app sketched above.
tckr-0.1.0/README.md ADDED
@@ -0,0 +1,144 @@
1
+ # tckr
2
+
3
+ A reusable async crypto data layer. Stitches together free (and free-tier) public
4
+ APIs into one clean, cached, typed interface — built to be `pip install -e`'d
5
+ into multiple local projects rather than copy-pasted between them.
6
+
7
+ Every call is async, cached per-source (TTL), and degrades gracefully — a dead
8
+ or rate-limited upstream returns `None` / `[]` rather than raising. Modules that
9
+ need an API key log a warning and return empty when the key is absent rather
10
+ than crashing the caller.
11
+
12
+ ## Sources
13
+
14
+ | Module | Source | Key? | Provides |
15
+ |---|---|---|---|
16
+ | `geckoterminal` | GeckoTerminal API v2 | no | DEX pools, tokens by contract address, OHLCV (Base, Solana, ETH, …) |
17
+ | `dexscreener` | Dexscreener API | no | DEX pairs, search, latest token profiles, paid-boost rankings |
18
+ | `hyperliquid` | Hyperliquid API | no | Single-exchange perps: funding, open interest, marks |
19
+ | `coinalyze` | Coinalyze API | free key | Cross-exchange perps: funding spread, OI, liquidations across Binance/Bybit/OKX/Hyperliquid/etc |
20
+ | `defillama` | DefiLlama API | no | Chain/protocol TVL, DEX volume, stablecoins, yields |
21
+ | `goplus` | GoPlus Security API | no | EVM token contract security scans (honeypot detection, taxes, owner privileges, holder dist) |
22
+ | `honeypot` | honeypot.is API | no | EVM sell-simulation backstop (ETH / BSC / Base) — actually attempts a swap to verify exit |
23
+ | `birdeye` | Birdeye public API | free key | Solana-focused token analytics: overview, top holders, trader PnL, security |
24
+ | `pumpfun` | Moralis / Bitquery (discovery + analytics) + Helius (state) | free key(s) | Solana memecoin launchpad. Discovery: new / about-to-bond / graduated lists. On-chain: bonding-curve state via SPL balance. Bitquery-exclusive analytics: top_traders, live_trades, migration_events, curve_trajectory, holder_distribution. |
25
+ | `neynar` | Neynar (Farcaster) | paid for most | Cast search, channel feeds, trending casts + fungibles, KOL helpers. 8 functions wired; only `user_by_username` works on free tier as of May 2026 — others return 402 until upgrade (degrade gracefully). |
26
+ | `wallet_pnl` | Helius (Solana) + Moralis (Base) + birdeye (prices) | uses existing keys | FIFO PnL across Sol+Base wallets. Auto-resolves ATA → owner. Per-token realized + unrealized USD. Filters wSOL/WETH/stables as counter assets by default. |
27
+ | `lp_lock` | Alchemy (EVM) | uses existing key | LP-lock detection for Uniswap V2 pairs, V3 positions, and V4 positions on Base / ETH. Auto-detects from input shape (40-hex-char address vs 64-hex-char PoolId). V2 returns `locked_pct`; V3/V4 return `n_locked_positions` + per-position detail. Covers UNCX V2, V3, V4 lockers; Team Finance on ETH. Team Finance Base + per-lock unlock_at are TODOs. |
28
+ | `virtuals` | api.virtuals.io | no key | Virtuals Protocol AI-agent launchpad on Base. `new_tokens` / `about_to_graduate` / `recently_graduated` / `genesis_launches` / `token_info`. Tracks the 42K-VIRTUAL bonding-curve graduation threshold. |
29
+ | `clanker` | clanker.world/api | no key | Clanker Farcaster-native token launcher (Base + multi-chain). `new_tokens` / `trending_tokens` / `tokens_by_fid` / `tokens_by_deployer` / `holders` / `token_info`. Carries `requestor_fid` for direct cross-link with [[neynar]]. |
30
+ | `jito` | block-engine.jito.wtf + Helius | uses HELIUS_API_KEY | Solana MEV intel. `tip_floor()`, `tip_accounts()`, `bundle_status()`, `inflight_bundle_status()`, `tx_jito_info(sig)`, `snipe_score(sigs)`. Killer use case: feed `pumpfun.live_trades` signatures into `snipe_score` to quantify how heavily a launch was bot-sniped. |
31
+ | `alchemy` | Alchemy RPC | free key | EVM (Base, ETH) on-chain wallet balances + transfers |
32
+ | `helius` | Helius RPC | free key | Solana RPC convenience layer (balances, transfers) |
33
+ | `coingecko` | CoinGecko v3 | no key (rate-limited) / free demo key / paid Pro | Canonical spot / market / historical prices; `simple_price`, `coin_markets`, `coin`, `market_chart`, `search`, `trending`, `global_stats`, `categories`. |
34
+ | `polymarket` | Polymarket Gamma API | no | Prediction-market odds (binary YES/NO). `markets`, `top_volume`, `market`, `events`. |
35
+ | `pyth` | Pyth Hermes | no | On-chain oracle prices for ~400 feeds (crypto, equities, FX, metals, rates). `feeds`, `latest_price`, `latest_price_for_symbols`. Sub-second cadence. |
36
+ | `etherscan` | Etherscan V2 | free key | Unified EVM block explorer across ~70 chains (ETH=1, Base=8453, Arb, Op, Polygon, BNB, ...). `balance`, `token_transfers`, `contract_source`, `contract_abi`, `gas_oracle`, `eth_supply`. Backwards-compat with `BASESCAN_API_KEY`. |
37
+ | `solscan` | Solscan | no (public) / free key (Pro) | Solana block explorer. Public endpoints (`token_meta`, `account_info`, `account_tokens`, `token_holders`, `tx_detail`) work keyless; `SOLSCAN_API_KEY` upgrades to Pro for richer parsing + higher RL. |
38
+ | `lunarcrush` | LunarCrush API4 | free key | Social-sentiment scoring: Galaxy Score, AltRank, social volume, topic feeds. `coins_list`, `coin`, `coin_time_series`, `topic`, `topics_list`. Free tier ~100 req/day. |
39
+ | `messari` | Messari API v1/v2 | paid (mostly) | Research-grade asset profiles, metrics, news. `asset`, `asset_metrics`, `asset_profile`, `news_feed`, `assets`. Most endpoints moved behind paid plans in 2024-2025. |
40
+ | `tokenterminal` | Token Terminal API v2 | paid (mostly) | Protocol fundamentals: revenue, fees, P/E, treasury. `projects`, `project`, `project_metrics`, `metric_history`, `market_sectors`. Free tier exposes catalog; historical series are paid. |
41
+ | `thegraph` | The Graph | no (public gateway, throttled) / free key (decentralized) | Generic GraphQL access to indexed subgraphs (Uniswap, Aave, Compound, Lido, etc.). `query_subgraph(id, query, vars)`, `uniswap_v3_top_pools`. |
42
+
43
+ ## Install
44
+
45
+ ```
46
+ pip install -e path/to/tckr
47
+ ```
48
+
49
+ ## Usage
50
+
51
+ ```python
52
+ import asyncio
53
+ from tckr import geckoterminal, coinalyze
54
+
55
+ async def main():
56
+ pools = await geckoterminal.trending_pools("base", limit=5)
57
+ for p in pools:
58
+ print(p["name"], p["price_usd"], p["volume_24h_usd"])
59
+
60
+ # Cross-exchange funding spread for one coin — the killer Coinalyze use case
61
+ agg = await coinalyze.funding_aggregate("BTC")
62
+ if agg:
63
+ a = agg["aggregate"]
64
+ print(f"BTC funding APR — min {a['min_apr_pct']:.1f}% "
65
+ f"max {a['max_apr_pct']:.1f}% spread {a['spread_apr_pct']:.1f}%")
66
+
67
+ asyncio.run(main())
68
+ ```
69
+
70
+ ## Configuration
71
+
72
+ All env vars are optional — modules without keys still work; modules with keys
73
+ no-op until set. See `tckr/settings.py` for the full list.
74
+
75
+ API keys (only needed for the modules that declare them in the table above):
76
+
77
+ - `COINALYZE_API_KEY` — free signup at coinalyze.net (no card).
78
+ - `BIRDEYE_API_KEY` — free tier at birdeye.so (~30 req/min on the endpoints used here).
79
+ - `MORALIS_API_KEY` — free tier at moralis.com; primary source for `pumpfun` discovery (`new_tokens`, `about_to_bond`, `recently_graduated`).
80
+ - `BITQUERY_API_KEY` — free tier at bitquery.io; fallback for `pumpfun.new_tokens` (Bitquery has the richest Pump.fun-specific schema). Either Moralis or Bitquery alone gets you working discovery. On-chain `bonding_state` only needs `HELIUS_API_KEY`. Also unlocks the 5 Bitquery-exclusive analytics functions (top_traders, live_trades, migration_events, curve_trajectory, holder_distribution).
81
+ - `NEYNAR_API_KEY` — free signup at dev.neynar.com. As of May 2026 the free tier only includes `user_by_username` — `search_casts`, `channel_feed`, `trending_fungibles` and the other 5 require a paid plan.
82
+ - `ALCHEMY_API_KEY` — free tier covers Base + ETH at app.alchemy.com.
83
+ - `HELIUS_API_KEY` — free tier at helius.dev.
84
+ - `BASESCAN_API_KEY` — currently declared but not consumed by any shipped module; reserved for the planned etherscan/basescan module.
85
+ - `COINGECKO_API_KEY` — CoinGecko Pro plan (paid). Uses `pro-api.coingecko.com` and unlocks Pro-only endpoints + 500 req/min+.
86
+ - `COINGECKO_DEMO_API_KEY` — CoinGecko Demo plan (free signup). Same public endpoints with a slightly higher rate-limit than no-key.
87
+ - `ETHERSCAN_API_KEY` — Etherscan V2 (free signup at etherscan.io). One key works across all V2-supported chains via the `chainid` parameter (ETH, Base, Arbitrum, Optimism, Polygon, BNB, Avalanche, zkSync, ...). The legacy `BASESCAN_API_KEY` env is also accepted as a fallback.
88
+ - `SOLSCAN_API_KEY` — Solscan Pro (paid). Public endpoints work without it.
89
+ - `LUNARCRUSH_API_KEY` — required for any LunarCrush call. Free signup at lunarcrush.com (~100 req/day on free tier).
90
+ - `MESSARI_API_KEY` — Messari. Free 'Hobbyist' tier limited to ~20 req/min on a small subset; most useful endpoints are paid (Pro / Enterprise).
91
+ - `TOKENTERMINAL_API_KEY` — Token Terminal. Free tier covers project catalog + limited metrics; full historical series + most metrics are paid.
92
+ - `THEGRAPH_API_KEY` — optional. Without it the public gateway is used (heavily throttled); with it the decentralized network gateway gives much higher quota.
93
+
94
+ Cache TTLs (override only if you know why):
95
+
96
+ - `TCKR_DEX_TTL_S`, `TCKR_DEX_OHLCV_TTL_S`, `TCKR_PERPS_TTL_S`,
97
+ `TCKR_TVL_TTL_S`, `TCKR_ONCHAIN_TTL_S`, `TCKR_FUNDING_AGG_TTL_S`,
98
+ `TCKR_LIQUIDATION_TTL_S`, `TCKR_SECURITY_TTL_S`,
99
+ `TCKR_HONEYPOT_TTL_S`, `TCKR_BIRDEYE_TTL_S`, `TCKR_TOKEN_METADATA_TTL_S`,
100
+ `TCKR_COINGECKO_TTL_S` (default 30), `TCKR_COINGECKO_HISTORY_TTL_S` (default 600),
101
+ `TCKR_POLYMARKET_TTL_S` (default 30),
102
+ `TCKR_PYTH_PRICE_TTL_S` (default 10), `TCKR_PYTH_CATALOG_TTL_S` (default 3600),
103
+ `TCKR_ETHERSCAN_TTL_S` (default 30), `TCKR_ETHERSCAN_CONTRACT_TTL_S` (default 86400),
104
+ `TCKR_ETHERSCAN_GAS_TTL_S` (default 15), `TCKR_ETHERSCAN_STATS_TTL_S` (default 600),
105
+ `TCKR_SOLSCAN_TTL_S` (default 60),
106
+ `TCKR_LUNARCRUSH_TTL_S` (default 120),
107
+ `TCKR_MESSARI_TTL_S` (default 300),
108
+ `TCKR_TOKENTERMINAL_TTL_S` (default 300), `TCKR_TOKENTERMINAL_HISTORY_TTL_S` (default 3600),
109
+ `TCKR_THEGRAPH_TTL_S` (default 60).
110
+
111
+ HTTP behavior:
112
+
113
+ - `TCKR_HTTP_TIMEOUT_S` (default 15.0), `TCKR_HTTP_MAX_RETRIES` (default 2).
114
+
115
+ ## New-pair / early-stage strategies (Sol + Base)
116
+
117
+ The thesis: the highest-asymmetry crypto trades are early entries on new
118
+ tokens that grow. The full toolkit for that is now shipped — `pumpfun` and
119
+ `virtuals` / `clanker` cover discovery on each chain's dominant launchpad;
120
+ `bonding_state` + `lp_lock` cover safety; `wallet_pnl` covers smart-money
121
+ tracking; `jito` quantifies bot-sniping intensity; `neynar` adds the
122
+ Farcaster social signal on Base. The modules compose:
123
+
124
+ - `pumpfun.live_trades(mint)` signatures → `jito.snipe_score(sigs)` →
125
+ "how bot-sniped is this launch?"
126
+ - `clanker.new_tokens()` `requestor_fid` → `neynar.user_popular_casts(fid)` →
127
+ "what is this deployer saying about their token?"
128
+ - `clanker.new_tokens()` `pool_address` (V4 PoolId) → `lp_lock(pool_id)` →
129
+ "is this Clanker token's LP locked?"
130
+ - `pumpfun.top_traders(mint)` wallets → `wallet_pnl(wallet)` → "is the top
131
+ buyer of this token actually profitable across their other trades?"
132
+
133
+ Future open items (no fixed timeline): per-lock `unlock_at` decoding for
134
+ UNCX V2/V3/V4, Team Finance Base address, V3/V4 USD-value-of-locked-liquidity
135
+ (needs tick math), neynar paid-tier endpoints when budgeted.
136
+
137
+ ## Consumers
138
+
139
+ `tckr` is currently consumed by:
140
+
141
+ - **Market-Research-Comp** (sibling repo) — uses the fundamental-trading subset
142
+ (`geckoterminal`, `dexscreener` basics, `hyperliquid`, `coinalyze`, `defillama`).
143
+ Contract-safety + Solana-analytics modules ship in the library but are not
144
+ exposed to those agents — reserved for the future new-pair app sketched above.
@@ -0,0 +1,97 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "tckr"
7
+ version = "0.1.0"
8
+ description = "Async, cached, gracefully-degrading aggregator over the major free crypto data APIs (DEX, perps, TVL, on-chain, social, launchpads, MEV) — plus an agent toolkit that exposes the data to any LLM platform via MCP, the Claude Agent SDK, OpenAI function calling, or LangChain."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ keywords = [
14
+ "crypto", "defi", "dex", "perps", "tvl", "solana", "base", "ethereum",
15
+ "hyperliquid", "geckoterminal", "dexscreener", "defillama", "coinalyze",
16
+ "agent", "mcp", "llm", "claude", "openai", "langchain",
17
+ ]
18
+ authors = [
19
+ { name = "tckr contributors" },
20
+ ]
21
+ classifiers = [
22
+ "Development Status :: 4 - Beta",
23
+ "Intended Audience :: Developers",
24
+ "Intended Audience :: Financial and Insurance Industry",
25
+ "Operating System :: OS Independent",
26
+ "Programming Language :: Python :: 3",
27
+ "Programming Language :: Python :: 3.11",
28
+ "Programming Language :: Python :: 3.12",
29
+ "Programming Language :: Python :: 3.13",
30
+ "Topic :: Office/Business :: Financial",
31
+ "Topic :: Software Development :: Libraries :: Python Modules",
32
+ "Framework :: AsyncIO",
33
+ "Typing :: Typed",
34
+ ]
35
+ dependencies = [
36
+ "httpx>=0.27",
37
+ "solders>=0.21",
38
+ "eth-abi>=5.0",
39
+ "eth-hash[pycryptodome]>=0.7",
40
+ ]
41
+
42
+ [project.optional-dependencies]
43
+ # Each adapter is opt-in. Install only what your agent platform needs.
44
+ agent-claude = ["claude-agent-sdk>=0.1"]
45
+ agent-mcp = ["mcp>=1.0"]
46
+ agent-openai = ["openai>=1.40"]
47
+ agent-langchain = ["langchain-core>=0.3"]
48
+ # Convenience meta-extras:
49
+ agent = ["tckr[agent-claude,agent-mcp]"]
50
+ agent-all = ["tckr[agent-claude,agent-mcp,agent-openai,agent-langchain]"]
51
+ # Development:
52
+ dev = [
53
+ "pytest>=8",
54
+ "pytest-asyncio>=0.23",
55
+ "ruff>=0.6",
56
+ "build>=1.2",
57
+ ]
58
+
59
+ [project.scripts]
60
+ tckr = "tckr.cli:main"
61
+ # Universal MCP stdio server — spawn from any MCP-compatible client (Claude
62
+ # Code, Cline, Continue.dev, OpenAI Agents, custom orchestrators…).
63
+ # Requires `tckr[agent-mcp]`.
64
+ tckr-mcp = "tckr.agent_toolkit.adapters.mcp_stdio:main"
65
+
66
+ [project.urls]
67
+ Homepage = "https://github.com/tckr-org/tckr"
68
+ Repository = "https://github.com/tckr-org/tckr"
69
+ Issues = "https://github.com/tckr-org/tckr/issues"
70
+ Changelog = "https://github.com/tckr-org/tckr/blob/main/CHANGELOG.md"
71
+
72
+ [tool.setuptools.packages.find]
73
+ include = ["tckr*"]
74
+
75
+ [tool.pytest.ini_options]
76
+ asyncio_mode = "auto"
77
+ testpaths = ["tests"]
78
+ markers = [
79
+ "needs_keys: test requires API keys in the environment",
80
+ ]
81
+
82
+ [tool.ruff]
83
+ line-length = 100
84
+ target-version = "py311"
85
+
86
+ [tool.ruff.lint]
87
+ # Pragmatic default — surface clear bugs without being aesthetically opinionated.
88
+ select = ["E", "F", "W", "I", "B", "UP"]
89
+ ignore = [
90
+ "E501", # line length handled by formatter
91
+ "B008", # function-call default args (httpx uses them)
92
+ "E701", # single-line `if x: y = z` is a deliberate terse idiom in this codebase
93
+ "UP031", # %-format in GraphQL query bodies stays readable; f-strings collide with {...}
94
+ ]
95
+
96
+ [tool.ruff.lint.per-file-ignores]
97
+ "tests/*" = ["B018"] # bare expressions in tests are fine (asserts)
tckr-0.1.0/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,54 @@
1
+ """tckr — a reusable async crypto data layer + agent toolkit.
2
+
3
+ Import source modules directly:
4
+
5
+ geckoterminal DEX pools, tokens by address, OHLCV (Base, Solana, …)
6
+ dexscreener DEX pairs, search, new-pair discovery, paid-boost rankings
7
+ hyperliquid perps: funding, open interest, marks (single-exchange)
8
+ coinalyze perps cross-exchange: funding spread, OI, liquidations
9
+ defillama chain/protocol TVL, DEX volume, stablecoins, yields
10
+ goplus EVM token contract security scans (honeypot, taxes, holders)
11
+ honeypot EVM sell-simulation backstop (subset of chains)
12
+ birdeye Solana-focused token analytics (holders, trades, security)
13
+ pumpfun Solana memecoin launchpad: discovery + bonding-curve state
14
+ neynar Farcaster API: cast search, channel feeds, trending fungibles
15
+ wallet_pnl FIFO position tracking across Solana + Base wallets
16
+ lp_lock LP-lock detection (Base / EVM) via known locker contracts
17
+ virtuals Virtuals Protocol AI-agent launchpad (Base, multi-chain)
18
+ clanker Clanker Farcaster-native token launcher (Base, multi-chain)
19
+ jito Solana MEV: tip floor, bundle status, snipe-score for txs
20
+ alchemy on-chain wallet balances + transfers
21
+ helius Solana RPC convenience layer
22
+ coingecko canonical spot / market / historical prices (v3 + Pro)
23
+ polymarket Polymarket Gamma API: prediction-market odds
24
+ pyth Pyth Network on-chain oracle prices (~400 feeds, keyless)
25
+ etherscan Etherscan V2 unified EVM block explorer (~70 chains, one key)
26
+ solscan Solana block explorer (public + Pro paths)
27
+ lunarcrush social sentiment: Galaxy Score, AltRank, topic feeds
28
+ messari research-grade asset profiles, metrics, news
29
+ tokenterminal protocol fundamentals (revenue, P/E, treasury)
30
+ thegraph GraphQL access to indexed subgraphs (Uniswap, Aave, ...)
31
+
32
+ Every network call is async, cached (tckr.cache.TTLCache), and degrades
33
+ gracefully — it returns None / [] rather than raising when an upstream fails.
34
+ Modules that need an API key log a warning and return empty when the key is
35
+ absent rather than crashing the caller.
36
+
37
+ Capability registry: `tckr.registry` tracks per-module tier and which
38
+ env vars unlock each. `capabilities()` returns the live state as JSON; the CLI
39
+ `tckr status` prints it. The same registry powers tier tags on tool
40
+ descriptions in `tckr.agent_toolkit`.
41
+
42
+ Agent toolkit (optional extras): `pip install tckr[agent-claude]` for
43
+ the Claude Agent SDK in-process MCP server, `tckr[agent-mcp]` for the
44
+ universal stdio MCP server (console script `tckr-mcp`, works with any
45
+ MCP client), `tckr[agent-openai]` for OpenAI function-calling, or
46
+ `tckr[agent-langchain]` for LangChain `StructuredTool` wrappers.
47
+ """
48
+ from __future__ import annotations
49
+
50
+ from tckr.registry import capabilities # re-exported for convenience
51
+
52
+ __version__ = "0.1.0"
53
+
54
+ __all__ = ["capabilities", "__version__"]
@@ -0,0 +1,6 @@
1
+ """Allow `python -m tckr <command>` as an alternative to the
2
+ `tckr` script entry point installed by pyproject.toml.
3
+ """
4
+ from tckr.cli import main
5
+
6
+ raise SystemExit(main())