crypto-deep-research
Summary: This MCP server exposes 10 tools for crypto market data, analysis, deep research, and report/RAG access.
List available analyses (
list_analyses) and the 66 research items (list_research_items).Resolve a coin symbol/name to its CoinGecko ID (
resolve_coin).Get a market snapshot: price, market cap, ATH/ATL distance, changes (
get_market_snapshot).Run a single analysis like technical, liquidations, news, volumes, or whales (
run_analysis).Run full 66-item deep research producing score, probability, report, and optional prompt (
deep_research).Search the local RAG store of news, analyses, and reports (
search_context).List generated reports (
list_reports) and fetch a report's markdown by name (get_report).Get run details including all 66 item results (
get_run).
Provides public market data from Binance, including OHLCV, volume, order book, funding rates, open interest, and long/short ratios for crypto analysis.
Provides Bitcoin network data from Blockchain.com, including hashrate, addresses, fees, and large BTC transfers.
Uses the GitHub API to measure developer activity for crypto projects.
Uses Google Trends via pytrends to measure search interest for crypto assets.
Provides public market data from OKX, including OHLCV, volume, order book, funding rates, open interest, and long/short ratios for crypto analysis.
Collects community sentiment data from Reddit for crypto market analysis.
Aggregates crypto news from RSS feeds such as CoinDesk, Cointelegraph TR, Decrypt, and The Block for news and sentiment analysis.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@crypto-deep-researchrun a 66-item deep research on bitcoin and generate a Claude prompt"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Crypto Deep Research
Kripto paralar için yerel RAG + 66 maddelik deep research sistemi. NotebookLM benzeri bir yapı: seçili coinler için ücretsiz veri kaynaklarından veri toplar, analiz eder, kaynaklı rapor üretir ve hariçi AI'lara (Claude, Codex, ChatGPT...) yapıştırılabilecek detaylı Türkçe prompt oluşturur.
Bu sistem yatırım tavsiyesi değildir. Üretilen skor ve olasılıklar araştırma amaçlıdır ve kesinlik iddiası taşımaz.
Özellikler
10 ana analiz modülü (çoklu seçilebilir):
Likidasyon haritası ve türev piyasalar (funding, open interest, long/short)
Balina alım-satım / toplam arz (zincir-üstü büyük transferler + stablecoin likiditesi)
Tüm borsalardaki hacimler (CoinGecko ticker dağılımı + Binance/OKX/Bybit doğrulaması)
Gelirler, fee'ler ve fee/mcap oranı (DefiLlama)
Son haberler + sentiment skorları (CryptoPanic, RSS, GDELT, VADER)
Geçmiş mcap / güncel mcap oranı ve kendi tarihine göre konum
BTC/ETH paritesi, ATH ve direnç mesafesi
USD bazlı ATH/ATL mesafesi
Coinler arası mcap sıralaması ve geçmiş max/min rank uzaklığı
Timeframe teknik analiz (RSI, MACD, EMA, Bollinger, ATR, Fibonacci, formasyonlar)
66 maddelik deep research motoru: Kullanıcının verdiği 66 maddelik liste birebir
items.yamliçinde tanımlıdır. Her madde veri + kaynak + güven + skor üretir; veri bulunamayan maddeler açıkça "veri yok" işaretlenir ve ortalamaya katılmaz.Context Control Plane: Her context objesinin kimliği, scope'u, provenance'ı, TTL'i ve versiyonu vardır. Politika kararları:
KEEP / COMPRESS / CACHE / OFFLOAD / DROP / PIN / PREFETCH. Offload geri alınabilir (offload → compress → retrieve → rehydrate).Tamamen yerel RAG: SQLite (metadata + FTS5) + LanceDB (vektör) +
fastembed(intfloat/multilingual-e5-large). İnternet gerekmez, ek maliyet yok.MCP server: Claude Desktop, Claude Code, Codex, Cursor gibi araçlara doğrudan veri ve analiz sunar.
Web UI: NotebookLM benzeri koyu tema; coin/timeframe/analiz seçimi, timeframe bazlı interaktif SVG fiyat grafiği, yükseliş/düşüş olasılık çubuğu, 66 madde tablosu (arama + sıralama + açılır veri görünümü), rapor ve prompt görüntüleme, Markdown indirme ve Yazdır/PDF, RAG arama, rapor geçmişi.
tr-TR sayı biçimi: Tüm çıktılarda binlik ayracı nokta, ondalık virgül; mikro fiyatlar (ör. PEPE $0,00000338) bilimsel gösterime düşmeden ve sıfıra yuvarlanmadan gösterilir.
Opsiyonel OpenRouter: API anahtarı girilirse RAG soruları ve rapor üretimi LLM'e devredilebilir. Anahtar yoksa sistem yalnızca prompt üretir (varsayılan davranış).
Related MCP server: Surf MCP Server
Kurulum
git clone https://github.com/alikula37/crypto-deep-research.git
cd crypto-deep-research
uv sync
cp .env.example .env # opsiyonel API anahtarlarıGereksinimler: Python 3.10+, uv. Web UI için Node 22.12+ (Vite 8 / Vitest 5).
İlk RAG kullanımında embedding modeli indirilir (~2GB). Daha küçük model için
.enviçindeCDR_EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2kullanın.
Kullanım
# Anlık piyasa özeti
uv run cdr snapshot bitcoin
# Seçili analizler
uv run cdr analyze bitcoin --types technical,news,liquidations
# Tüm analizler + 66 madde + rapor + prompt
uv run cdr deep-research bitcoin --platform claude --json
# RAG arama (haber + analiz + rapor deposu)
uv run cdr search "ETF akışları" --coin bitcoin
# RAG + OpenRouter (anahtar varsa)
uv run cdr ask "BTC için likidasyon riski nedir?" --coin bitcoin
# MCP server (stdio)
uv run cdr mcp
# Web UI + REST API
uv run cdr serve # http://127.0.0.1:8000
# Diğer
uv run cdr items # 66 madde listesi
uv run cdr analyses # analiz anahtarları
uv run cdr cache --stats # önbellek durumu
uv run cdr rag-stats # RAG deposu durumuWeb UI geliştirme modu:
cd web && npm install && npm run dev # http://localhost:5173Docker ile Çalıştırma
Docker Desktop veya Colima ile çalışır. Veriler ./data altında kalıcıdır
(SQLite, raporlar, promptlar, vektör deposu, embedding önbelleği).
# İmajı derle ve web UI + API'yi başlat
docker compose build
docker compose up -d # http://127.0.0.1:8000
docker compose logs -f
docker compose downCLI komutları konteynerde:
docker compose run --rm app cdr snapshot bitcoin
docker compose run --rm app cdr analyze bitcoin -t technical,news
docker compose run --rm app cdr deep-research bitcoin --platform claude
docker compose exec app cdr search "ETF akışları" --coin bitcoinMCP server (stdio) konteynerde:
docker run -i --rm -v "$PWD/data:/data" crypto-deep-research:latest /app/.venv/bin/cdr mcpColima kurulumu (Docker Desktop alternatifi, hesap gerektirmez):
brew install colima docker docker-compose
colima start --cpu 4 --memory 6 --disk 40
brew services start colima # açılışta otomatik başlat (opsiyonel)Not: Embedding modeli ilk RAG kullanımında indirilir ve ./data/fastembed altında
saklanır (~2GB); sonraki çalıştırmalarda yeniden indirilmez.
REST API
Web UI aynı zamanda bir REST API sunar (uv run cdr serve → http://127.0.0.1:8000):
Metot | Yol | Açıklama |
GET |
| Durum ve tanımlı API anahtarları |
GET |
| Kullanılabilir analizler |
GET |
| 66 maddelik kayıt defteri |
GET |
| Anlık fiyat/mcap/ATH-ATL + global veriler |
GET |
| Grafik için mum verisi (Binance, yedek CoinGecko) |
POST |
| Seçili analizleri çalıştırır |
POST |
| 66 madde + rapor + prompt üretir |
POST |
| Yerel RAG araması / (anahtar varsa) LLM yanıtı |
GET |
| Rapor listesi / Markdown içeriği |
GET |
| Koşu listesi / detayı |
GET |
| Context Control Plane kayıtları |
GET |
| Vektör deposu durumu |
Swagger arayüzü: http://127.0.0.1:8000/docs
MCP Entegrasyonu
MCP server uv run cdr mcp komutuyla stdio üzerinden çalışır. Claude Desktop için
claude_desktop_config.json:
{
"mcpServers": {
"crypto-deep-research": {
"command": "uv",
"args": [
"--directory",
"/TAM/YOL/crypto-deep-research",
"run",
"cdr",
"mcp"
]
}
}
}Sunulan araçlar:
Araç | Açıklama |
| Kullanılabilir analiz anahtarları |
| 66 maddelik liste |
| Sembol → CoinGecko id çözümleme |
| Fiyat, mcap, ATH/ATL, global veriler |
| Tek analiz çalıştırma |
| 66 madde + skor + rapor + prompt |
| Yerel RAG araması |
| Rapor listeleme/okuma |
| Koşu detayları (66 madde dahil) |
Ücretsiz Veri Kaynakları
Kaynak | Kullanım | Anahtar |
CoinGecko Demo | fiyat, mcap, rank, ATH/ATL, geçmiş mcap, kategori, dominance | opsiyonel ( |
Binance / OKX / Bybit public | OHLCV, hacim, order book, funding, OI, long/short | gerekmez |
Coinalyze | gerçek likidasyon geçmişi, OI/funding serisi | ücretsiz key önerilir |
DefiLlama | fee/gelir, stablecoin, TVL, bridge (cross-chain) | gerekmez |
CryptoPanic | haber + topluluk sentiment | ücretsiz key |
RSS (CoinDesk, Cointelegraph TR, Decrypt, The Block...) | haber akışı | gerekmez |
GDELT | haber hacmi, jeopolitik tarama | gerekmez |
alternative.me | Fear & Greed endeksi | gerekmez |
topluluk sentimenti | gerekmez | |
Google Trends (pytrends) | arama ilgisi | gerekmez |
Blockchain.com / mempool.space | hashrate, adres, ücret, büyük BTC transferleri | gerekmez |
Blockscout / Etherscan | ETH ağı, gas, büyük transferler | Etherscan için opsiyonel key |
yfinance | DXY, S&P, altın, VIX, petrol, 10Y | gerekmez |
FRED | faiz, enflasyon, getiri eğrisi | ücretsiz key |
Deribit | DVOL volatilite endeksi | gerekmez |
GitHub API | geliştirici aktivitesi | gerekmez |
Kimlik gerektirmeyen kaynaklar anahtarsız çalışır; anahtar verilen kaynaklar otomatik devreye girer. Tüm istekler SQLite önbelleğindedir (TTL + stale fallback), sayaçlar rate limit korunacak şekilde ayarlanmıştır.
Skorlama Metodolojisi
Her madde
-1(güçlü negatif) ile+1(güçlü pozitif) arasında skor ve0..1güven üretir.Ağırlıklı skor:
Σ(skor × ağırlık × güven) / Σ(ağırlık × güven); yalnızcaok/partialdurumdaki ve güveni > 0 olan maddeler katılır.Yükseliş olasılığı:
%50 + 45 × ağırlıklı skor(5–95 aralığına kırpılır); düşüş bunun tümleyenidir.Beklenen fiyat aralığı: ATR yüzdesinden türetilen günlük hareket ve skora göre asimetrik kaydırma ile hesaplanır.
Veri bulunmayan maddeler (ör. astroloji, ücretli API gerektiren alanlar) ortalamaya katılmaz; raporda şeffaf şekilde listelenir.
Bilinen Sınırlamalar
Bazı 66 madde için ücretsiz ve doğrulanabilir veri yoktur (astroloji, patent veritabanları, Bitcoin ATM hacmi, X/Twitter API'si). Bu maddeler "veri yok" olarak işaretlenir.
Likidasyon haritası, Coinalyze anahtarı yoksa open interest ve kaldıraç kademelerinden yaklaşık olarak tahmin edilir.
Balina yön tespiti yalnızca kamuya açık bilinen borsa adresleriyle sınırlıdır; etiketler doğrulama gerektirebilir.
TradingView'ün ücretsiz API'si yoktur; yerel teknik derecelendirme vekili kullanılır.
Ücretsiz API'ler zaman zaman limit uygular (429); stale cache + FTS yedekleri devrededir.
Geliştirme
uv run pytest -q # Python testleri
uv run ruff check src tests # lint
cd web && npm test # web birim testleri (Vitest)
cd web && npm run build # web derlemeBağımlılık güncellemeleri Dependabot ile haftalık açılır; CI yeşil olduğunda
otomatik olarak squash ile birleştirilir (dependabot-auto-merge iş akışı).
CI: GitHub Actions (ruff + pytest + web build).
Lisans
MIT
Available Tools
10 toolsdeep_researchC
66 maddelik arastirmayi calistirir; skor, olasilik, rapor ve prompt uretir.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | ||
| platform | No | generic | |
| timeframe | No | 1d | |
| lookback_days | No | ||
| include_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the artifacts produced (score, probability, report, prompt), which is useful, but says nothing about runtime, cost, permissions, or whether the operation has side effects on stored data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the action and its outputs front-loaded and no filler. It is efficient, though the brevity shades into under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a 5-parameter, unannotated tool the description leaves parameter meaning, usage context, and behavioral traits almost entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and largely does not. It never explains coin, platform, timeframe, or lookback_days; only the word 'prompt' loosely hints at include_prompt.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb ('calistirir' / runs) and resource (a 66-item research) and lists its outputs (score, probability, report, prompt). However, '66 maddelik arastirma' is too vague to tell the agent what domain this covers, and it gives no differentiation from the sibling run_analysis, leaving overlap unresolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as run_analysis or list_analyses. The agent must infer the intended context entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_snapshotC
Anlik fiyat, piyasa degeri, ATH/ATL mesafesi ve degisimleri dondurur.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it only lists returned data fields. It says nothing about data freshness/latency (is the 'current price' real-time or cached?), whether it requires authentication, rate limits, or what happens for an unknown coin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the returned fields with no filler or repetition. It is appropriately sized, though the field enumeration makes the purpose read like a return-value list rather than a task statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained — yet the description spends its only sentence doing exactly that. For a simple one-parameter read tool the definition is adequate, but the coin identifier format and whether data is live remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required 'coin' parameter has 0% schema description coverage and the description never mentions it at all. It does not clarify whether coin expects a ticker symbol, an internal ID, or a name — exactly the ambiguity the description should resolve, especially given the sibling resolve_coin exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('dondurur' = returns) and enumerates the exact resource contents: current price, market cap, ATH/ATL distance and changes. That is far more informative than the bare tool name, though it never distinguishes this tool from siblings like run_analysis or get_report, which likely also surface market data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives, no prerequisites, and no scoping context relative to the other nine market/analysis tools. An agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportC
Rapor adiyla markdown icerigini dondurur.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return payload (markdown content) but says nothing about error behavior for unknown names, permissions, or whether results are cached or live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action and result front-loaded and no filler. It is efficient, though it is written in a different language than the sibling tool names, which slightly hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no further explanation. For a simple one-parameter getter this is nearly adequate, but with no annotations the description still omits failure modes and lookup semantics for the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does clarify that the sole 'name' parameter refers to the report name ("Rapor adiyla"), which adds meaning beyond the bare schema, but gives no format, case, or exactness details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns ("dondurur") the markdown content of a report identified by its name. This is clear and non-tautological, but it does not distinguish the tool from the obvious sibling list_reports, which an agent must infer on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as list_reports or get_run. The agent is left to infer that this fetches a single report's content while list_reports enumerates them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runC
Kosu detaylarini (66 madde sonuclari dahil) dondurur.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does reveal that the payload includes 66-item results, which is useful, but says nothing about read-only safety, errors for missing runs, permissions, or size/latency characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler, and the core action-plus-content statement is front-loaded. It is efficient, though extremely short given the gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the description does not need to enumerate return fields, and it adds a helpful note about the 66-item results. However, with no annotations and an undocumented run_id, the definition is only minimally sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single required parameter run_id has no title, description, or example. The description only implicitly ties itself to a 'kosu' (run) and never explains the identifier's format or provenance, leaving a critical input undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb ('dondurur' = returns) and resource ('kosu detaylari' = run details), and adds scope by noting the 66-item results are included. It does not differentiate this tool from the near-identical sibling get_report, so an agent must guess which one to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling (get_report, list_analyses, run_analysis) it should be preferred over. The name 'get_run' implies retrieval of a single run, but nothing in the text confirms or constrains that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analysesC
Kullanilabilir analiz anahtarlarini listeler.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Listeler' implies a safe read, but nothing is said about ordering, whether the list is exhaustive, or whether keys are stable identifiers. With an output schema present, return-format disclosure is not required, but the behavioral profile is still thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste, and the action is front-loaded. It is terse but not padded, so it earns its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with a full output schema, the description is minimally adequate: it says what is returned without needing to describe the shape. It still omits the crucial context of what the returned keys are used for (e.g., as input to run_analysis), which is the main thing an agent needs to act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case. The description correctly implies a no-argument enumeration, matching the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('lists available analysis keys'), which is more than a tautology. However, it offers no differentiation from siblings like list_reports, list_research_items, or list_analyses' natural partner run_analysis, so an agent cannot tell from the text alone why it would pick this over the other listers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool, no prerequisites, and no mention of alternatives. The agent must infer from context that these keys feed run_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reportsC
Uretilmis raporlari listeler.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether results are paginated, capped, ordered, or scoped to the caller, and it does not state permissions or side effects. 'Generated reports' hints at a read-only listing but never confirms it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words, but it is under-specified rather than genuinely concise. Nothing is front-loaded because there is only one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required. Still, for a listing tool with an undocumented limit parameter, no annotations, and no usage context, the description leaves significant gaps an agent needs before invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'limit' parameter, which has a default of 20 but no documented meaning in either schema or description. The description does not compensate by explaining what limit controls or its bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (listeler = lists) and resource (uretilmis raporlar = generated reports), which is clearer than mere tautology. However, it offers no differentiation from siblings like list_analyses or list_research_items, leaving the agent to infer the boundary from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives, and no prerequisites or exclusions. The listing intent is weakly implied by 'listeler' but nothing tells the agent when this tool is preferable to get_report or the other list_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_research_itemsC
66 maddelik arastirma listesini dondurur.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only implies a fixed-size read (66 items). It does not state whether the call is read-only, whether results can be paginated, how the 66 items are ordered, or what authentication is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and free of filler. It is arguably over-terse, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required, and a zero-parameter list tool is simple. Still, the complete absence of annotations and of any when-to-use routing against three sibling list tools leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; baseline 4 applies. The description correctly implies no filtering arguments are accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (dondurur/returns) and a resource (arastirma listesi/research list), so the basic action is clear. However, "66 maddelik" (66-item) adds a hard-coded count instead of defining scope, and nothing distinguishes it from siblings like list_analyses or list_reports, which are also list-shaped tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool versus list_analyses, list_reports, or deep_research. The agent is left to infer that this is the general research-listing entry point purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_coinC
Sembol veya isimden coin kimligini (CoinGecko id) cozer.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only lookup but says nothing about ambiguity handling (e.g., multiple coins matching 'BTC'), error behavior for unknown queries, or rate limits against CoinGecko. This is a meaningful gap for a resolver whose whole job is mapping fuzzy input to a canonical id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler, which is appropriate for a one-parameter lookup tool. It is efficient, though an additional clause about ambiguity or failure behavior would have earned its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary. For a simple 1-param resolver, the definition is minimally viable but omits the ambiguity and not-found behavior that determines whether the agent can safely act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'query' parameter, so the description must compensate. It does add useful meaning by stating that the query accepts a symbol or a name, which is exactly the semantic the bare string-typed schema lacks. However, it gives no format examples or constraints on either input form.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: resolving a coin's identity (CoinGecko id) from either a symbol or a name. That is concrete and actionable. It does not differentiate itself from any sibling, though none of the listed siblings (list_analyses, get_market_snapshot, etc.) perform resolution, so the risk of confusion is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no indication of what to do when resolution is ambiguous or fails. The agent must infer the usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_analysisC
Tek bir analizi calistirir (ornek: technical, liquidations, news, volumes, whales...).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | ||
| analysis | No | technical | |
| timeframe | No | 1d | |
| lookback_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries full behavioral burden. It says it runs an analysis but doesn't disclose execution side effects, expected latency, whether it's read-only, output format, or error behavior. Major gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with the key examples front-loaded. Efficient, though it could devote a clause to the required 'coin' parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values needn't be explained, but with zero annotation coverage, zero schema description coverage, and only one of four parameters hinted at, the description is incomplete for a 4-param execution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. The only parameter hint is the analysis-type examples ('technical, liquidations, news, volumes, whales'). The required 'coin', plus 'timeframe' and 'lookback_days', are entirely undocumented in the description, and no enum values are formally given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: runs a single analysis, with concrete examples of analysis types (technical, liquidations, news, volumes, whales). However it doesn't differentiate from siblings like list_analyses or deep_research explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives. The word 'single' implicitly contrasts with a batch/list operation, but the agent gets no explicit direction on when to pick this over list_analyses or deep_research.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contextC
Yerel RAG deposunda (haber, analiz, rapor) arama yapar.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | ||
| coin | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about ranking, whether raw chunks or synthesized answers are returned, latency/cost, or any auth requirement. For a RAG retrieval tool whose behavior varies significantly between implementations, this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no padding, and the purpose is front-loaded. However, its brevity reflects under-specification rather than discipline, so it earns no more than an adequate mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with three undocumented parameters, no usage guidance, and no annotations, the definition is not sufficient for an agent to invoke this tool correctly in the presence of nine siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (query, k, coin) have 0% schema description coverage and the description adds no meaning for any of them. In particular 'k' and 'coin' are opaque and entirely unexplained, leaving the caller unable to know that k is result count or that coin filters the corpus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('arama yapar' / performs a search) and resource (the local RAG repository), with content types (news, analysis, report) narrowing the scope. This implicitly distinguishes it from sibling browse tools like list_reports or list_analyses, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no indication of when to prefer this search over deep_research, run_analysis, or the list_* siblings. The agent must infer that 'search' differs from 'list' on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.0- First observed
deep_research - First observed
get_market_snapshot - First observed
get_report - First observed
get_run - First observed
list_analyses - First observed
list_reports - First observed
list_research_items - First observed
resolve_coin - First observed
run_analysis - First observed
search_context
TDQS
Scored across 10 tools
Most tools target distinct operations: resolving coins, snapshots, single analyses, full research runs, and report retrieval. Minor overlap exists between run_analysis (single analysis) and deep_research (66-item run), and between list_analyses and list_research_items, but descriptions clarify the distinction.
Nearly all tools use a consistent verb_noun pattern: list_analyses, list_research_items, resolve_coin, get_market_snapshot, run_analysis, search_context, list_reports, get_report, get_run. Only deep_research breaks the pattern by omitting a verb prefix.
Ten tools is well-scoped for a crypto deep-research server, covering discovery, execution, and retrieval without redundancy or bloat.
The surface covers discovery (list_analyses, list_research_items), execution (run_analysis, deep_research), and retrieval (list_reports, get_report, get_run) with supporting resolve_coin and search_context. Minor gaps like report deletion/export or batch multi-coin analysis are non-blocking.
Maintenance
Related MCP Connectors
MCP server giving AI agents one-connection access to crypto & DeFi data: DeFi protocol TVL, stableco
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Crypto trading intelligence MCP — 34+ endpoints, x402 pay-per-use, AI agent strategy & execution
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables MCP-compatible AI clients to access live crypto market data and AI-driven quantitative analysis, with structured outputs and full observability.-

Surf MCP Serverofficial
AlicenseAqualityBmaintenanceEnables access to 86 crypto data endpoints from the Surf API, including market data, wallets, social sentiment, on-chain queries, and more, through dynamically generated MCP tools.1526 npm8MIT- FlicenseNot gradedqualityDmaintenanceEnables AI tools to execute trades and fetch market data across six crypto exchanges via natural language or API, with dual Telegram and MCP interfaces.2-
- AlicenseCqualityDmaintenanceAn MCP server offering 99 tools for AI agents to access crypto editorial content, market data, on-chain analytics, sentiment, and proprietary indicators, with citations and time-stamped responses.9928 npm1MIT