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 varlıklar için araştırma, kaynak arama ve değerlendirme sistemi. 10 analiz modülü ve 66 kriterden kaynaklı Türkçe rapor ve hazır prompt üretir; haber, analiz ve geçmiş raporlarda yerel hybrid RAG ile soru-cevap bağlamı bulur. Web arayüzü, CLI, REST API ve 12 araçlı MCP sunucusu içerir.
Metin ve vektör depoları, embedding ve rapor oluşturma yerelde çalışır. Piyasa/haber verileri dış sağlayıcılardan gelir; OpenRouter yanıtı ve çeviri isteğe bağlı harici model çağrılarıdır. Temel araştırma ve kaynak arama için LLM anahtarı gerekmez.
Araştırma amaçlıdır, yatırım tavsiyesi değildir. Heuristik yön yüzdesi ölçülmüş başarı oranı değildir. Örnek BTC raporu, 12 Eylül 2026 tarihli tarihsel çıktıdır; güncel piyasa tahmini değildir.
Hızlı başlangıç
Docker
git clone https://github.com/alikula37/crypto-deep-research.git
cd crypto-deep-research
docker compose up -d --buildYerel kurulum
Python 3.10+, uv ve web derlemesi için Node.js 22.12+ gerekir. Komutları depo kökünde çalıştırın:
git clone https://github.com/alikula37/crypto-deep-research.git
cd crypto-deep-research
uv sync --frozen
cp .env.example .env
npm --prefix web ci
npm --prefix web run build
uv run cdr serveMevcut kurulumda .env dosyanızı koruyun. Kurulum güncel main kaynak kodundan yapılır;
eski/global cdr komutu yerine depo kökünde uv run cdr kullanın. web/dist üretilmeden
backend web arayüzünü sunamaz; yalnız uv sync yeterli değildir. Kod güncellemesinden
sonra web'i de yeniden derleyin. Sunucu terminal açıkken çalışır.
İlk embedding kullanımında model indirilir; süre ve disk ihtiyacı seçilen modele bağlıdır.
İlk açılışta varsayılan takip listesi oluşturulur ve otomatik araştırmalar çalışabilir.
Bu davranışlar .env üzerinden kapatılabilir.
Related MCP server: Surf MCP Server
Üründe neler var?
Menü | İçerik |
Araştırma | Fiyat/mum grafiği, skor, 10 modül, 66 kriterin bulgu/güven/veri durumu |
Analiz | Geçmiş sonuçların ileri getirileri, kalibrasyon görünümü, 2–4 varlık karşılaştırması |
Takip | Takip listesi, alarmlar, manuel portföy, fonlama carry paper takibi |
Üretim | Markdown rapor, kopyalama/indirme/yazdırma, prompt, opsiyonel LLM ve çeviri |
Arşiv | Yerel kaynak arama ve geçmiş raporlar |
Rehber | Tıklanabilir mimari, chunk/overlap laboratuvarı, embedding ve RRF örnekleri |
Araştırma işleri arka planda ilerleme bildirir ve SQLite'ta saklanır. Eksik veri
veri yok olarak gösterilir ve skor ortalamasına alınmaz; kısmi veri yarım ağırlıkla,
aynı sinyali paylaşan kriterler grup düzeltmesiyle hesaba katılır.
Dengeli, Muhafazakâr ve Agresif profilleri ağırlıkları değiştirir.
Klavye: / aramaya git · ⌘/Ctrl + K komut paleti · ? yardım ·
⌘/Ctrl + Enter derin araştırma · Esc kapat.
Telegram botu opsiyoneldir: cdr telegram; /fiyat, /skor, /rapor, /arastir, /yardim.
Fonlama carry bölümü simülasyon/paper takiptir; gerçek emir göndermez.
Teknolojiler ve akış
Katman | Teknoloji / görev |
Backend | Python, FastAPI, Uvicorn, Pydantic, Typer |
Veri toplama | HTTPX, piyasa/on-chain sağlayıcıları, RSS ve haber yedekleri |
Metin ve durum | SQLite: tam kaynaklar, chunk metni/metadata, araştırma işleri ve öğrenme kayıtları |
Sözcüksel arama | SQLite FTS5 + BM25 |
Embedding | FastEmbed / ONNX; varsayılan |
Vektör deposu | Yerel LanceDB |
Fusion / reranking | RRF ( |
Opsiyonel yanıt | Kaynak numaralı prompt → OpenRouter |
Frontend | React 19, Vite 8; rehberde isteğe bağlı Three.js sahneleri |
Finansal ML | Yerel lojistik regresyon / boosted trees, Platt veya izotonik kalibrasyon |
flowchart LR
A[Haber / analiz / rapor] --> B[Token bütçesi + cümle chunking]
B --> C[E5 chunk embedding]
C --> D[LanceDB vektörler]
B --> E[SQLite metin + FTS5]
Q[Kullanıcının sorusu] --> QE[E5 soru embedding]
QE --> V[Vektör arama]
D --> V
Q --> L[BM25 arama]
E --> L
V --> F[RRF birleşimi]
L --> F
F --> R[Opsiyonel reranker]
R --> P[Top-k + kaynaklı prompt]
P --> O[Opsiyonel LLM yanıtı]Varsayılan chunking 240 token bütçesi / en fazla 40 tokenlık overlap hedefi kullanır. Tam cümleler sığdırılır; bütçeyi aşan tek cümle token parçalarına bölünür. Gerçek overlap cümle boylarına göre daha az veya sıfır olabilir. Ürünün soru-cevap bağlamı varsayılan 8 chunk içerir. Ayrıntılı mimari ve uygulama sınırları.
Ölçülmüş sonuçlar ve sınırları
Kaynak bulma, yanıt desteği ve finansal tahmin ayrı değerlendirilir. AUC/Brier/ECE, RAG başarı skoru değildir. Son kaydedilmiş deneyler:
Deney | Sonuç | Kapsam / sınır |
Hybrid HitRate@5 = 0,80 (4/5 test sorusu) | 107 kaynak; asistan taslağı etiketler; insan yanıt kalitesi ölçümü yok | |
Sabit token ve cümle yönteminin ölçülen retrieval metrikleri eşit | 170 kaynak, 5 dev sorusu; kalite artışı gösterilmedi | |
Geçici dev önerisi 240/80; kanıt kapsamı@5 24/24, 240/40'ta 23/24 | 252 kaynak, 24 dev sorusu, 7 ayar; taslak etiketler, final test açılmadı | |
1/7/30 gün modellerinin hiçbiri baseline Brier'ı geçemedi; üçü de reddedildi | 7.400 tarihsel satır; ayrı kalibrasyon ve final holdout; model aktifleştirilmedi |
Chunk bütçesi deneyinde 240/0 da 24/24 kanıt buldu; donmuş seçim kuralında 240/80,
nDCG aşamasında öne çıktı. Bootstrap fark aralığı sıfırı içerir. Etiketler insan
incelemesi beklediği ve ürünün k=8 kesimi henüz ölçülmediği için ürün varsayılanı
240/40 korunur. Bu farklı korpus ve sorgu kümelerinin skorları doğrudan karşılaştırılmaz.
Deney dizini protokollere ve ham sonuçlara yönlendirir.
Finansal eğitimde erken dönemde purged walk-forward model seçimi, sonraki ayrı dönemde kalibratör fit'i ve son kronolojik holdout'ta değerlendirme vardır. Tarih grupları birlikte kalır; ileri getiri ufku sınırlara değen/aşan örnekler çıkarılır. Aynı holdout üzerinde yeniden ayar seçimi yapılırsa yeni bir final dönem gerekir.
Mülakatta gösterim
Rehber → Nasıl Çalışır? → Mülakat modu üzerinden mimari kutularını veya ok etiketlerini açın; seçilen adımı laboratuvarda inceleyin. Chunk sınırları ve overlap, embedding koordinatları, dense/BM25 sıraları, RRF katkıları ve kaynaklı prompt gösterilir. “Boyutu nasıl seçiyoruz?” paneli kaydedilmiş deneyi açar; bir ayarı seçip kurgu belgedeki sınırlarını görebilirsiniz. Panel ürün ayarlarını değiştirmez.
910 tokenlık öğretim belgesinin tokenizer çıktıları, embedding'leri ve retrieval sıraları gerçek hesaplamalardır; kayıtlı 240/40 indekslerini kullanırlar. Diğer bütçeler chunk laboratuvarını değiştirir. Reranker sırası ve örnek yanıt öğretim için yazılmıştır; tur canlı model/benchmark çağrısı yapmaz. Sunum düğmesi sabittir; hareket azaltma ve WebGL olmadığında metin görünümü desteklenir.
Sık kullanılan CLI komutları
uv run cdr snapshot bitcoin
uv run cdr deep-research bitcoin --platform claude --json
uv run cdr search "ETF akışları" --coin bitcoin --json
uv run cdr ask "BTC likidasyon riski nedir?" --coin bitcoin --json
uv run cdr rag-reindex --strategy sentence --chunk-tokens 240 --overlap-tokens 40
uv run cdr rag-eval data/rag-evaluation.jsonl --split dev --retrieval hybrid --json
uv run cdr rag-chunk-tune data/rag-chunk-dev.jsonl --output data/chunk-selection.json
uv run cdr rag-answer-eval data/rag-answers.jsonl --split test --json
uv run cdr learning-fill
uv run cdr ml-train --source backfill --features base --json
uv run cdr ml-eval --horizon 7
uv run cdr mcpdata/rag-*.jsonl dosyaları kendi arşiviniz için hazırlayacağınız etiketli veri setleridir;
klonla birlikte gelmez. Şema, dev/test ayrımı, rag-chunk-rescore ve diğer örnekler:
RAG benchmark rehberi. Bütün komutlar için uv run cdr --help.
Docker içinde örnek: docker compose run --rm app cdr snapshot bitcoin.
MCP bağlantısı
MCP istemcinizin stdio sunucu yapılandırmasına ekleyin:
{
"mcpServers": {
"crypto-deep-research": {
"command": "uv",
"args": ["--directory", "/TAM/YOL/crypto-deep-research", "run", "cdr", "mcp"]
}
}
}12 araç: list_analyses, list_research_items, resolve_coin, get_market_snapshot,
run_analysis, get_price_chart, deep_research, search_context, list_reports,
get_report, get_run, get_prompt. İstemcinin MCP ayar ekranı/yolu istemciye göre değişir.
Yapılandırma
Başlangıç şablonu .env.example; anahtarlar opsiyoneldir.
Değişken | Varsayılan / görev |
|
|
|
|
|
|
|
|
| Boş: kapalı; modelin dil/lisans kapsamını kontrol edin |
| Anahtar boş; seçili model |
|
|
|
|
| Bot / opsiyonel bildirim hedefi |
CoinGecko, Coinalyze, CryptoPanic, Etherscan ve FRED anahtarları ilgili kaynakları genişletir. Ücretsiz sağlayıcılarda kota, erişim veya kapsam değişebilir; eksik sonuçlar arayüzde veri durumu olarak raporlanır. Anahtarsız likidasyon seviyeleri model tahminidir, ölçülmüş likidasyon geçmişi değildir.
Chunk/model ayarı değişince tam kaynaklardan rag-reindex gerekir. CLI override yalnız
o indekslemeyi etkiler; yeni ingestion için .env ile aynı ayarı kullanın ve sunucuyu
yeniden başlatın. Yeniden indeksleme sırasında araştırma ingestion'ını durdurun.
Geliştirme ve dokümanlar
uv sync --frozen --extra dev
npm --prefix web ci
make checkmake check: Ruff + Python testleri + web testleri + production build.
CI ve Dependabot auto-merge iş akışları şu an GitHub'da manuel kapalıdır; doğrulama
yerelde yapılır. Dependabot güncelleme önerileri açıktır.
Lisans
MIT. Harici modeller ve veri kaynaklarının kendi lisans/koşulları ayrıca geçerlidir.
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
Agent MCP: 65 tools — 5-chain verification, risk, prediction & crypto trends, 17 web tools.
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
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.1533 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-
- FlicenseNot gradedqualityCmaintenanceEnables agents to access live crypto market data and execute risk-controlled paper trades through standardized MCP tool calls.-