Skip to main content
Glama
alikula37

crypto-deep-research

by alikula37

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):

    1. Likidasyon haritası ve türev piyasalar (funding, open interest, long/short)

    2. Balina alım-satım / toplam arz (zincir-üstü büyük transferler + stablecoin likiditesi)

    3. Tüm borsalardaki hacimler (CoinGecko ticker dağılımı + Binance/OKX/Bybit doğrulaması)

    4. Gelirler, fee'ler ve fee/mcap oranı (DefiLlama)

    5. Son haberler + sentiment skorları (CryptoPanic, RSS, GDELT, VADER)

    6. Geçmiş mcap / güncel mcap oranı ve kendi tarihine göre konum

    7. BTC/ETH paritesi, ATH ve direnç mesafesi

    8. USD bazlı ATH/ATL mesafesi

    9. Coinler arası mcap sıralaması ve geçmiş max/min rank uzaklığı

    10. 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.yaml iç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 .env içinde CDR_EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 kullanı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 durumu

Web UI geliştirme modu:

cd web && npm install && npm run dev    # http://localhost:5173

Docker 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 down

CLI 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 bitcoin

MCP server (stdio) konteynerde:

docker run -i --rm -v "$PWD/data:/data" crypto-deep-research:latest /app/.venv/bin/cdr mcp

Colima 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 servehttp://127.0.0.1:8000):

Metot

Yol

Açıklama

GET

/api/health

Durum ve tanımlı API anahtarları

GET

/api/analyses

Kullanılabilir analizler

GET

/api/items

66 maddelik kayıt defteri

GET

/api/snapshot/{coin}

Anlık fiyat/mcap/ATH-ATL + global veriler

GET

/api/ohlcv/{coin}?timeframe=1d&limit=300

Grafik için mum verisi (Binance, yedek CoinGecko)

POST

/api/analyze

Seçili analizleri çalıştırır

POST

/api/deep-research

66 madde + rapor + prompt üretir

POST

/api/rag/search / /api/rag/ask

Yerel RAG araması / (anahtar varsa) LLM yanıtı

GET

/api/reports / /api/reports/{name}

Rapor listesi / Markdown içeriği

GET

/api/runs / /api/runs/{id}

Koşu listesi / detayı

GET

/api/contexts / /api/contexts/{key}

Context Control Plane kayıtları

GET

/api/rag/stats

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

list_analyses

Kullanılabilir analiz anahtarları

list_research_items

66 maddelik liste

resolve_coin

Sembol → CoinGecko id çözümleme

get_market_snapshot

Fiyat, mcap, ATH/ATL, global veriler

run_analysis

Tek analiz çalıştırma

deep_research

66 madde + skor + rapor + prompt

search_context

Yerel RAG araması

list_reports, get_report

Rapor listeleme/okuma

get_run

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 (CDR_COINGECKO_API_KEY)

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

Reddit

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 ve 0..1 güven üretir.

  • Ağırlıklı skor: Σ(skor × ağırlık × güven) / Σ(ağırlık × güven); yalnızca ok/partial durumdaki 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 derleme

Bağı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 tools
deep_researchC

66 maddelik arastirmayi calistirir; skor, olasilik, rapor ve prompt uretir.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYes
platformNogeneric
timeframeNo1d
lookback_daysNo
include_promptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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...).

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYes
analysisNotechnical
timeframeNo1d
lookback_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
coinNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 10 tool updatesv0.1.0
    • First observeddeep_research
    • First observedget_market_snapshot
    • First observedget_report
    • First observedget_run
    • First observedlist_analyses
    • First observedlist_reports
    • First observedlist_research_items
    • First observedresolve_coin
    • First observedrun_analysis
    • First observedsearch_context

TDQS

B3.1/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

Ten tools is well-scoped for a crypto deep-research server, covering discovery, execution, and retrieval without redundancy or bloat.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP-compatible AI clients to access live crypto market data and AI-driven quantitative analysis, with structured outputs and full observability.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
    -