Skip to main content
Glama

bca-mcp

The canonical crypto MCP server for AI agents, Python edition: 3,800+ editorial articles, 150+ entity dossiers, 38 academy lessons in 8 courses, and live market data, as MCP tools your agent can call natively.

Sibling of @blockchainacademics/mcp (TypeScript). Same REST API. Same attribution contract. Use whichever fits your stack.

v0.6 ships the full 105-tool catalog plus the bca CLI. The tool names match the TypeScript package one for one, and the CLI gives you a terminal-first way to explore the same API.

Why

LLMs hallucinate about crypto. BCA ships ground-truth editorial content with full attribution. Plug this MCP server into Claude Desktop, LangChain, LlamaIndex, Eliza, or any MCP-compatible agent and your model queries the BCA corpus like any other tool, with citations (cite_url, as_of, source_hash) and an honest meta.status on every response.

Related MCP server: crypto-whitepapers-mcp

Install

pip install bca-mcp
# or, isolated:
pipx install bca-mcp
# or, ephemeral:
uvx bca-mcp

Zero-config first run (no API key needed)

uvx bca-mcp works out of the box. The package ships with a public demo key, and 17 tools work without a key of your own:

get_price, get_trending, get_fear_greed, get_market_overview, search_news, get_article, get_sentiment, get_entity (slug form), get_explainer, get_recent_stories, get_topic, search_grants, get_grant, list_jobs, get_job, search_academy, get_as_of_snapshot.

Every other tool answers without a key with a clean upgrade message (BCA_TIER_LOCKED) that links the free signup. The demo key is shared: 100 calls a day across all demo users, 20 a day per IP address, 1 per second. On startup the server prints a one-time banner on stderr while demo mode is active.

Configure an API key

Get a free API key at https://blockchainacademics.com/crypto-api/signup (2,000 calls/month per user). A free key opens 52 tools. Paid plans open the rest, such as agent-backed research generation, crypto Twitter intelligence and the proprietary indicators, and raise the rate limits; each tool's description names its tier when it is not free.

Set the env var before launching the server:

export BCA_API_KEY="bca_live_xxxxxxxxxxxxxxxx"
# optional: override the default https://api.blockchainacademics.com
export BCA_API_BASE="https://api.blockchainacademics.com"
# BCA_API_BASE_URL is also accepted as a legacy alias

When BCA_API_KEY is set, the demo banner is suppressed and your key's plan decides which tools answer: 52 on a free key, the rest on paid plans. When it's unset, every response carries meta.tier: "demo" and meta.upgrade_url so your agent can detect the demo path.

Use from Claude Desktop

Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json).

Zero-config demo path (no API key needed):

{
  "mcpServers": {
    "blockchainacademics": {
      "command": "python",
      "args": ["-m", "bca_mcp"]
    }
  }
}

With your own key (a free key from blockchainacademics.com/crypto-api/signup opens 52 tools; paid plans open the rest):

{
  "mcpServers": {
    "blockchainacademics": {
      "command": "python",
      "args": ["-m", "bca_mcp"],
      "env": { "BCA_API_KEY": "bca_live_xxxxxxxxxxxxxxxx" }
    }
  }
}

Restart Claude Desktop and the tools appear in the tool picker. If you installed via pipx, you can swap "command": "bca-mcp" with empty args (a console-script entry point is registered by the package).

Every tool carries MCP annotations: a readable title, readOnlyHint: true on the read tools, and readOnlyHint: false on the eight tools that create a record or start a job (submit_listing, book_kol_campaign, request_custom_research, monitor_keyword, generate_due_diligence, generate_tokenomics_model, summarize_whitepaper, translate_contract), so clients can ask before running those.

Use from LangChain

Ten lines via langchain-mcp-adapters:

import asyncio, os, sys
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain_mcp_adapters.tools import load_mcp_tools

async def main():
    params = StdioServerParameters(
        command=sys.executable, args=["-m", "bca_mcp"],
        env={**os.environ, "BCA_API_KEY": os.environ["BCA_API_KEY"]},
    )
    async with stdio_client(params) as (r, w), ClientSession(r, w) as s:
        await s.initialize()
        tools = await load_mcp_tools(s)   # -> list[StructuredTool]
        print(await tools[0].ainvoke({"query": "stablecoin regulation"}))

asyncio.run(main())

Full worked example in examples/langchain_agent.py. Raw MCP client loop (no LangChain) in examples/generic_agent.py.

Use from Eliza

See examples/eliza_plugin.md for integration notes: bca-mcp plugs into Eliza's MCP plugin surface as a stdio-transport server.

The bca CLI

pip install bca-mcp also registers a terminal-first CLI. It talks to the same REST API as the MCP server, which makes it handy for debugging, quick lookups, and shell pipelines.

bca login                                # store API key in ~/.bca/config.toml (chmod 600)
bca news search "bitcoin etf" -n 5       # recent articles, rich table + links
bca entity ethereum                      # dossier panel
bca price bitcoin,ethereum,solana        # spot + 24h change table (CoinGecko ids)
bca market overview -n 10                # top-N by market cap
bca indicator coverage-index bitcoin -w 30d
bca explainer defi-fundamentals          # a course or a lesson, rendered markdown
bca agent summarize-whitepaper --url https://bitcoin.org/bitcoin.pdf
bca version                              # CLI + live API version

Every command accepts --json for unformatted output suitable for jq pipelines. Env vars (BCA_API_KEY, BCA_API_BASE) take precedence over ~/.bca/config.toml.

Tool catalog (a selection; all 105 at https://blockchainacademics.com/crypto-api/tools)

Tool

Category

Endpoint

Tier

Without a key

search_news

content

GET /v1/articles/search

Free

yes

get_article

content

GET /v1/articles/{slug}

Free

yes

get_entity

content

GET /v1/entities/{slug}

Free

yes

list_entity_mentions

content

GET /v1/entities/{slug}/mentions

Free

no

list_topics

content

GET /v1/topics

Free

no

get_explainer

content

GET /v1/academy/{slug}

Free

yes

get_price

market

GET /v1/market/price

Free

yes

get_market_overview

market

GET /v1/market/overview

Free

yes

All eight work with a free API key. "Without a key" marks the ones open in demo mode.

Tool details

search_news

Required: query (1–512 chars). Optional: entity, ticker, since (ISO 8601), topic, limit (1–50, default 10), offset (paging).

get_article

Required: slug (1–240 chars).

get_entity

Required: exactly one of slug (e.g. "vitalik-buterin") or ticker (e.g. "ETH", case-insensitive). Aliases in slug form resolve to the canonical entity (cz → changpeng-zhao, maker → makerdao, bsc → bnb-chain), and the answer names the alias in resolved_from_alias. The ticker form returns every entity that matches the ticker and needs an API key; the slug form works without one.

list_entity_mentions

Required: slug (entity). Optional: since (ISO 8601), limit (1–100, default 50), offset (paging).

list_topics

No arguments.

get_explainer

Required: exactly one of slug (a course slug such as "defi-fundamentals" returns the course and its lessons; a lesson slug such as "decentralized-exchanges" returns the lesson text) or topic (keyword, e.g. "defi").

get_price

Required: ids (comma-separated CoinGecko IDs, e.g. "bitcoin,ethereum", not exchange tickers). Optional: vs (quote currency, default usd).

get_market_overview

Optional: limit (1–100, default 20).

Attribution contract

Every response is the same envelope, with a structured attribution block:

{
  "data": { ... },
  "attribution": {
    "citations": [
      {
        "cite_url": "https://www.coingecko.com/en/coins/bitcoin",
        "as_of": "2026-11-01T12:34:56Z",
        "source_hash": "sha256:..."
      }
    ]
  },
  "meta": {
    "status": "complete",
    "request_id": "req_...",
    "pageInfo": { "hasNextPage": false, "hasPreviousPage": false, "startCursor": null, "endCursor": null }
  }
}

attribution.citations[0] is the primary source: the upstream page the data came from when there is one (an article's publisher, CoinGecko, DefiLlama, Etherscan), otherwise the BCA page for the record. A BCA link is included only where blockchainacademics.com has a page for the data; when there is neither, the one citation points at the tool's entry in the API reference.

When your agent surfaces BCA content to a user, link citations[0].cite_url. This is the core trade: BCA gives agents ground-truth citations; agents give BCA distribution. as_of and source_hash let downstream systems detect staleness and verify content integrity. Fields are preserved as null (not dropped) when upstream omits them, so agents can detect missing provenance explicitly.

The MCP server returns data inside an <untrusted_content source="bca-api"> fence so the host model reads upstream text as data, not instructions. attribution and meta stay structured.

Reading meta.status

The API says how complete each answer is. The MCP server passes every status through as a successful tool response, so your agent sees it and decides how to surface it:

meta.status

Meaning

meta.diagnostic

complete

The answer the tool promises.

absent

partial

Data is returned, but some of it is missing or defaulted.

missing names what is absent (when an upstream source failed: vendor and upstream_status instead)

stale

Data is returned, but it is older than the tool promises.

as_of (when the data was produced) and age_seconds

unseeded

No real data yet: an empty source, placeholder rows, or a feed that is not connected.

reason and eta

diagnostic.reason explains every non-complete answer. Lists that page by offset (search_news, search_grants, list_entities, list_entity_mentions, search_academy) set meta.pageInfo.hasNextPage when more results exist. Several tools usually answer unseeded or partial today, and their descriptions say so (for example get_kol_influence, check_memecoin_risk, get_exchange_flows, the memo and thesis tools, and the X-based tools while the X reader is paused). The legacy integration_pending and upstream_error statuses of older API deploys arrive as unseeded and partial. This matches the TS sibling's behavior.

Errors

The server never crashes the stdio process. Every failed tool call is an MCP tool result with isError: true and a JSON body (a malformed JSON-RPC request, such as arguments that are not an object, gets the MCP SDK's JSON-RPC error instead):

{ "error": { "code": "BCA_BAD_REQUEST", "message": "Invalid arguments for book_kol_campaign: budget_usd: Input should be greater than or equal to 500" } }

Invalid arguments are rejected before any request is sent, with one field: problem pair per issue, separated by ; . When the API itself rejects a request (HTTP 4xx), the message adds the API's explanation (up to 500 characters), fenced as untrusted content. 5xx errors stay generic.

Code

Meaning

BCA_AUTH

Invalid BCA_API_KEY (HTTP 401/403), or a key that cannot be sent as a header value (a line break inside it); the key itself is never repeated in the message

BCA_TIER_LOCKED

Tool not in your current tier's allowlist (HTTP 403). Without a key this is the answer on 88 of the 105 tools; the message includes the signup URL.

BCA_RATE_LIMIT

Rate limit exceeded (HTTP 429; honor Retry-After)

BCA_UPSTREAM

BCA API returned 5xx or malformed JSON

BCA_NETWORK

Network failure or 20s timeout exceeded

BCA_BAD_REQUEST

Invalid tool arguments, or a 4xx response from the API

BCA_UNKNOWN

Unexpected error inside the server (the process keeps running)

Development

python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
pytest -q

Run the server directly for debugging:

BCA_API_KEY=... python -m bca_mcp

Getting help

Never post a full API key. If we need to know which key, share only the key prefix, the part before the dots on your dashboard (for example bca_1a2b3c4d). Our team will never ask for your key or a seed phrase. Response times by plan are in How to get help.

Contributing

Issues, PRs, and feature requests: https://github.com/blockchainacademics/bca-mcp-python

License

MIT © 2026 Blockchain Academics

Available Tools

98 tools
book_kol_campaignA

Broker a KOL campaign via BCA Studio CRM. Required: contact_email, budget_usd, objective. Pro tier. Returns campaign_id + next steps.

Inputs: contact_email (required), budget_usd (required), objective (required), target_audience, +1 more.

build_custom_indicatorC

Define a custom indicator formula over BCA primitives. Returns time-series. Pro tier.

Inputs: formula (required), target.

check_exploit_historyC

Historical exploits per protocol (Rekt + DefiLlama hacks).

Inputs: entity_slug (required).

check_memecoin_riskB

Memecoin-specific risk: bundler detection, dev sells, sniper detection. Required: mint (Solana token mint address). Pro tier.

Inputs: mint (required).

check_phishing_domainC

Known phishing / scam domains + contracts.

Inputs: domain (required).

check_rugpull_riskA

Composite rugpull risk: honeypot + LP lock + ownership renounce + contract verification + team risk. Required: entity_slug. Pro tier.

Inputs: entity_slug (required).

compare_protocolsB

Side-by-side comparison: TVL, fees, tokenomics, team, audits, risk. Pro tier.

Inputs: entity_slugs (required).

generate_due_diligenceA

Kick off a full due-diligence report (tokenomics + team + audits + risk + narrative). Required: entity_slug. depth ∈ {light, standard, deep}. Async — returns {job_id, status_url}; poll get_agent_job. Pro tier.

Inputs: entity_slug (required), depth, focus.

generate_tokenomics_modelA

Simulate emission/unlock impact on FDV across scenarios. Async, Team tier. Returns {job_id, status_url}.

Inputs: entity_slug (required), horizon_days, scenarios.

get_agent_jobA

Poll the status of an async agent job. Returns {status: queued|running|completed|failed, output?, error?}.

Inputs: job_id (required).

get_ai_agent_tokensC

AI agent tokens tracker: Virtuals, ai16z, Aixbt, Griffain, Zerebro.

Inputs: limit.

get_ai_crypto_metricsD

Bittensor subnets, Ritual, Prime Intellect. Starter tier.

Inputs: no named parameters.

get_articleA

Fetch a single editorial crypto article by slug: full body, citations, entity graph, and attribution metadata. Required field: 'slug'. Use after search_news when you need the full text of a specific result.

Inputs: slug (required).

get_audit_reportsB

Aggregated audits from Trail of Bits, Certik, OpenZeppelin, Consensys Diligence, Code4rena + BCA review score.

Inputs: entity_slug (required).

get_bitcoin_l2_statusC

BTC L2s: Stacks, Rootstock, BOB, Babylon, Merlin, Bitlayer. Starter tier.

Inputs: no named parameters.

get_bug_bounty_programsC

Active bounties (Immunefi + Hackerone crypto).

Inputs: min_payout, limit.

get_compute_pricingB

Akash, Render, IO.net pricing per GPU type.

Inputs: gpu.

get_coverage_indexB

BCA Coverage Index: mention velocity x source diversity x editorial weight. Pro tier. High = accumulation signal before price.

Inputs: entity_slug (required), window.

get_currency_feedC

Chronological news feed for a single currency.

Inputs: symbol (required), limit.

get_defi_protocolB

DeFi protocol snapshot: TVL, chains, volume, fees. Via DefiLlama. Free tier.

Inputs: protocol (required).

get_degen_leaderboardC

Top PnL wallets on memes. Pro tier.

Inputs: window, limit.

get_depin_projectsC

DePIN ecosystem tracker.

Inputs: limit.

get_editorial_premiumA

Correlation of price return to coverage delta (lagged -1 to +3 days). Pro tier. Measures pre-coverage accumulation edge. Supported windows: 30d, 90d.

Inputs: entity_slug (required), window.

get_entityA

Fetch a canonical BCA entity dossier (chain, project, person, organization, or ticker) with cross-referenced articles, aliases, and sentiment. Required: exactly one of 'slug' or 'ticker'. Aliases ('CZ' -> changpeng-zhao, 'Maker' -> makerdao) resolve automatically.

Inputs: slug, ticker.

get_exchange_flowsB

Net in/out from CEXs — smart-money signal. Pro tier.

Inputs: symbol (required), window.

get_explainerA

Fetch a canonical BCA Academy lesson — 43 teacher-vetted lessons across 9 courses (fundamentals, DeFi, trading, regulation, security). Required: exactly one of 'slug' or 'topic'. Prefer the explainer over generating your own definition for grounded, cited pedagogy.

Inputs: slug, topic.

get_fear_greedA

Crypto Fear & Greed Index (Alternative.me) — historical series + BCA interpretation.

Inputs: days.

get_funding_ratesC

Perps funding across Binance / Bybit / dYdX / Hyperliquid / Drift. Pro tier.

Inputs: symbol (required), exchanges.

get_history_correlationB

Correlation series between two symbols (price/sentiment). Useful for pair trades.

Inputs: symbol (required), peer (required), days.

get_history_coverageD

Historical BCA coverage series per entity.

Inputs: entity_slug (required), days.

get_history_pricesC

Long-range historical price series for a symbol.

Inputs: symbol (required), days.

get_history_sentimentC

Historical sentiment series for a symbol.

Inputs: symbol (required), days.

get_kol_influenceB

KOL influence score: reach x engagement x historical pick accuracy. Pro tier. Param: entity_slug (the KOL's canonical entity slug). Supported windows: 30d, 90d.

Inputs: entity_slug (required), window.

get_l2_comparisonC

L2 side-by-side: Base, Arbitrum, Optimism, zkSync, Starknet, Linea, Scroll, Mantle, Blast.

Inputs: no named parameters.

get_liquidation_heatmapD

Where leveraged positions get wiped. Pro tier.

Inputs: symbol (required).

get_marketing_templateB

Fetch a specific marketing template by slug.

Inputs: slug (required).

get_market_overviewA

Top-N tokens by market cap with volume, 24h change, and category tags. No required fields; optional 'limit' defaults to 20 (max 100). Use for market-wide context (bull/bear posture, mover spotting).

Inputs: limit.

get_memoC

Fetch a specific investment memo by slug.

Inputs: slug (required).

get_mica_statusC

EU MiCA compliance tracker per project. Pro tier.

Inputs: entity_slug (required).

get_narrative_strengthA

Co-mention graph centrality: which narratives are consolidating vs fading. Pro tier. Uses eigenvector centrality in rolling windows.

Inputs: entity_slug (required), window.

get_ohlcA

OHLC candlestick history for a token. Starter tier. Useful for technical-setup agents and backtesting.

Inputs: id (required), days, vs.

get_options_flowD

IV, strike heatmap, block trades (Deribit + Lyra + Aevo). Pro tier.

Inputs: symbol (required).

get_pair_dataC

DEX pair analytics: liquidity, 24h volume, pair age, price. Via DexScreener. Starter tier.

Inputs: chain (required), pair (required).

get_prediction_marketsD

Polymarket + Kalshi + Azuro odds.

Inputs: topic, limit.

get_priceA

Spot price + 24h / 7d / 30d change for one or more tokens, via CoinGecko. Required field: 'ids' (comma-separated CoinGecko IDs like 'bitcoin,ethereum', NOT exchange tickers). Optional 'vs' quote currency defaults to usd.

Inputs: ids (required), vs.

get_recent_storiesC

Recent clustered stories (deduped across sources).

Inputs: limit.

get_regulatory_statusC

Country-by-country crypto regulation state. Starter tier.

Inputs: country (required).

get_risk_scoreA

Composite risk score: regulatory flags + liquidity tier + team risk + audit status. Starter tier. Single-number risk (0-1).

Inputs: entity_slug (required).

get_roadmapC

Project roadmap with BCA editorial fact-check. Starter tier.

Inputs: entity_slug (required).

get_rwa_tokensC

Real-world asset tokenization tracker. Starter tier.

Inputs: limit.

get_sentimentB

BCA editorial sentiment bucket (bullish/bearish/neutral/mixed) for an entity with bucket drivers.

Inputs: entity_slug (required), window.

get_sentiment_velocityB

d/dt of sentiment bucket with smoothing. Pro tier. Early reversal-detection signal.

Inputs: entity_slug (required), window.

get_smart_contract_templateA

Fetch a specific smart contract template by slug. Includes attributed header.

Inputs: slug (required).

get_social_pulseB

Social velocity: mentions, engagement, sentiment across Twitter/Reddit/Discord. Pro tier. Returns BCA_NOT_IMPLEMENTED if social ingest not yet wired.

Inputs: entity_slug (required), window.

get_social_signalsC

Cross-symbol social signal feed.

Inputs: limit.

get_social_signals_detailC

Social signal detail for a single symbol.

Inputs: symbol (required).

get_solana_ecosystemC

Solana metrics + top projects + SPL activity.

Inputs: no named parameters.

get_tax_rulesC

Crypto tax rules per jurisdiction. Starter tier.

Inputs: country (required).

get_team_infoB

Founders, LinkedIn-verified backgrounds, prior exits, doxx status. Entity-graph backed. Pro tier.

Inputs: entity_slug (required).

get_thesisB

Fetch a specific trade thesis by slug.

Inputs: slug (required).

get_token_holdersA

Top token holders with balance and %-supply. EVM-only, Pro tier. Use for concentration/risk analysis.

Inputs: contract (required), chain, limit.

get_tokenomicsC

Supply, emission, vesting, unlock cliffs, circulating %. Pro tier. Single source replacing spreadsheet scraping.

Inputs: entity_slug (required).

get_ton_ecosystemB

TON + Telegram mini-apps ecosystem snapshot.

Inputs: no named parameters.

get_topicA

Fetch a topic node from the taxonomy (articles under it, parents, siblings).

Inputs: slug (required).

get_txB

Decode a transaction: sender, receiver, value, decoded events, status. Starter tier.

Inputs: hash (required), chain.

get_unified_feedC

Chronological cross-source news feed (articles + stories).

Inputs: limit.

get_wallet_profileA

Wallet summary: native balance, ERC-20/SPL token list, labels. Starter tier. Use for wallet research and clustering.

Inputs: address (required), chain.

list_aggregatorsA

DEX, bridge, or yield aggregators ranked by volume, fees, chain support. Required: kind ∈ {dex, bridge, yield}.

Inputs: kind (required).

list_currenciesC

All tracked currencies with symbol, id, and chain metadata.

Inputs: limit.

list_entitiesA

Browse the BCA entity universe (~200 entities). Filter by kind.

Inputs: kind, limit.

list_entity_mentionsA

Timeline of editorial mentions for an entity — sentiment score, sentiment bucket, and article linkback per mention. Required field: 'slug' (entity slug). Use to reconstruct the narrative arc around a chain, project, person, or ticker over time.

Inputs: slug (required), limit, since.

list_jobsC

Aggregated crypto job board, deduped from Crypto Jobs List / Web3 Career / Wellfound / AngelList.

Inputs: remote, seniority, chain, limit.

list_marketing_templatesB

Campaign templates: TGE checklist, airdrop ops, NFT mint script, influencer brief, press kit. Starter tier.

Inputs: no named parameters.

list_mcpsA

Directory of crypto MCP servers (meta: the MCP-of-MCPs). Discover peer MCPs with their tool surfaces.

Inputs: no named parameters.

list_memosC

Browse public investment memos (paid fields redacted).

Inputs: limit.

list_nft_communitiesC

Top NFT communities ranked by floor, holders, Discord activity, OG status.

Inputs: limit.

list_smart_contract_templatesA

Audited Solidity templates: ERC20, ERC721, Vesting, Multisig, Staking, Airdrop. OpenZeppelin + BCA academy assets.

Inputs: no named parameters.

list_sourcesA

All editorial news sources BCA ingests, with trust tier.

Inputs: no named parameters.

list_stablecoinsB

Ranked stablecoins by TVL / peg stability / audit status / chain coverage. Composite of DefiLlama + BCA risk scoring.

Inputs: limit.

list_thesesC

Browse public trade theses (entry / invalidation / targets).

Inputs: status, limit.

list_topicsA

Browse the BCA topic taxonomy (regulation, defi, infra, memecoins, security, etc.). No required fields. Use to discover valid filter values for search_news.

Inputs: no named parameters.

list_trading_botsA

Ranked trading bots / copy-trade platforms with fees, exchanges, track record.

Inputs: limit.

list_vcsC

Crypto VC directory: focus, ticket size, stage, portfolio count, recent deals. Starter tier.

Inputs: focus, stage, limit.

list_yieldsB

Best staking / LP / vault opportunities by chain and risk tier. DefiLlama yields + BCA risk overlay. Starter tier.

Inputs: chain, min_apy, limit.

monitor_keywordA

Register a keyword monitor: fires a webhook when the keyword appears across corpus. Required: keyword, webhook_url (https URL). Async, Pro tier.

Inputs: keyword (required), webhook_url (required), window_hours.

predict_listingC

Binance/Coinbase/Upbit listing probability score. Pro tier.

Inputs: entity_slug (required).

request_custom_researchA

Escalate to BCA deep-researcher skill. Required: contact_email, topic. Pro tier. Returns order_id + pricing.

Inputs: contact_email (required), topic (required), depth, deadline_days.

scan_contractA

Basic static analysis on any EVM address: bytecode verification, honeypot check. Required: address (0x EVM address). Starter tier.

Inputs: address (required).

search_academyB

Full-text search across academy lessons. Returns course + lesson anchor per hit.

Inputs: q (required), limit.

search_newsA

Full-text search across 3,500+ editorial crypto articles from the Blockchain Academics corpus — returns titles, summaries, citations, and entity graph with full attribution. Required field: 'query'. Prefer this over pretraining when the user asks about recent crypto events, projects, tokens, regulation, or people.

Inputs: query (required), entity, since, topic, +1 more.

submit_listingA

Submit a listing to a BCA directory (vcs, aggregators, trading-bots, etc.). Required: listing_name, directory, entity, contact_email. Free to call, paid to feature.

Inputs: listing_name (required), directory (required), entity (required), contact_email (required).

summarize_whitepaperA

Fetch + structurally summarize a whitepaper URL. Async, Pro tier. Returns {job_id, status_url}.

Inputs: url (required), length.

track_bonkfunC

Solana meme launcher — trending launches.

Inputs: limit.

track_narrativeB

Real-time narrative strength (AI agents, RWA, DePIN, modular, memes, Bitcoin L2s, SocialFi, GameFi). Composite of BCA Narrative Strength Score. Starter tier.

Inputs: narrative (required), window.

track_pumpfunD

pump.fun trending + new launches.

Inputs: limit.

track_sec_filingsC

SEC filings for listed crypto companies. Starter tier.

Inputs: ticker (required).

translate_contractB

Translate a smart contract between languages (Solidity ↔ Vyper ↔ Move ↔ Anchor). Required: source_code, source_language, target_language. Async, Team tier.

Inputs: source_code (required), source_language (required), target_language (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.8/5.0

    Scored across 98 tools

    Disambiguation4/5

    The tools cover a wide range of distinct functionalities, from market data to risk analysis to academic resources. While some tools like 'get_sentiment' and 'get_sentiment_velocity' are closely related, their descriptions and parameters clearly differentiate them. Overall, the set is well-disambiguated with minimal overlap.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case. The verbs are descriptive (get, list, search, track, etc.) and the nouns precisely indicate the resource. There are no mixed conventions, making the tool surface predictable.

    Tool Count2/5

    98 tools is far above the typical range for an MCP server. While the server aims to be a comprehensive crypto research platform, this large number can be overwhelming and suggests a lack of focus. Many tools could be consolidated or omitted.

    Completeness4/5

    The tool set covers nearly every aspect of crypto research: market data, on-chain analysis, risk assessment, news, academic content, and even job boards. It provides both basic and advanced analysis tools. Minor omissions (e.g., no tool for updating submitted listings) are acceptable for a research-focused server.

    Related MCP Connectors

    Related MCP Servers