# @blockchainacademics/mcp The canonical crypto MCP server for AI agents. **99 tools** spanning 3,501+ editorial articles, 200+ entity dossiers, 43 academy lessons, aggregated market + on-chain data, proprietary indicators, and async agent-backed generation — all accessible as MCP tools your AI agent can call natively. ## Tool categories (v0.4.0) | Category | Count | Examples | |---|---|---| | Content & corpus | 7 | `search_news`, `get_article`, `get_entity`, `get_explainer`, `list_entity_mentions`, `get_as_of_snapshot` | | Market data | 4 | `get_price`, `get_ohlc`, `get_market_overview`, `get_pair_data` | | On-chain | 4 | `get_wallet_profile`, `get_tx`, `get_token_holders`, `get_defi_protocol` | | Sentiment | 3 | `get_sentiment`, `get_social_pulse`, `get_fear_greed` | | Proprietary indicators | 6 | `get_coverage_index`, `get_narrative_strength`, `get_sentiment_velocity`, `get_editorial_premium`, `get_kol_influence`, `get_risk_score` | | Agent-backed (async, Pro+) | 6 | `generate_due_diligence`, `generate_tokenomics_model`, `summarize_whitepaper`, `translate_contract`, `monitor_keyword`, `get_agent_job` | | Directories | 13 | `list_stablecoins`, `list_yields`, `list_aggregators`, `list_mcps`, `list_vcs`, `list_jobs`, `build_custom_indicator`, … | | Fundamentals | 6 | `get_tokenomics`, `get_audit_reports`, `get_team_info`, `compare_protocols`, `check_rugpull_risk` | | Chain-specific | 4 | `get_solana_ecosystem`, `get_l2_comparison`, `get_bitcoin_l2_status`, `get_ton_ecosystem` | | Markets microstructure | 5 | `get_funding_rates`, `get_options_flow`, `get_liquidation_heatmap`, `get_exchange_flows`, `predict_listing` | | Narrative / meta | 5 | `track_narrative`, `get_ai_agent_tokens`, `get_depin_projects`, `get_rwa_tokens`, `get_prediction_markets` | | Regulatory | 4 | `get_regulatory_status`, `track_sec_filings`, `get_mica_status`, `get_tax_rules` | | Security | 4 | `check_exploit_history`, `check_phishing_domain`, `get_bug_bounty_programs`, `scan_contract` | | Memes / degen | 4 | `track_pumpfun`, `track_bonkfun`, `check_memecoin_risk`, `get_degen_leaderboard` | | Services (revenue) | 3 | `book_kol_campaign`, `request_custom_research`, `submit_listing` | | History time-series | 4 | `get_history_prices`, `get_history_sentiment`, `get_history_correlation`, `get_history_coverage` | | Compute / AI crypto | 2 | `get_compute_pricing`, `get_ai_crypto_metrics` | | Corpus meta | 7 | `list_entities`, `get_topic`, `search_academy`, `get_trending`, `get_unified_feed`, `list_sources`, `get_recent_stories` | | Memos + theses + social | 6 | `list_memos`, `get_memo`, `list_theses`, `get_thesis`, `get_social_signals`, `get_social_signals_detail` | | Currencies | 2 | `list_currencies`, `get_currency_feed` | Every tool response carries `cite_url` (with UTM src attribution), `as_of` (time-travel snapshot), and `source_hash` (content integrity). Tools for unreleased integrations (Twitter social pulse, DEXTools, bonk.fun, Bittensor) return `{status: "integration_pending", reason, eta}` rather than failing. The MCP server is fully usable today. ## Why LLMs hallucinate about crypto. BCA ships ground-truth editorial content with full attribution. Plug this MCP server into Claude Desktop, LangChain, Eliza, or any MCP-compatible agent and your model queries the BCA corpus like any other tool — with citations, timestamps, and source hashes on every response. ## Install ### Claude Desktop (zero-config demo) The package ships with a public demo key baked in. No signup needed to try it. Add to `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`): ```json { "mcpServers": { "blockchainacademics": { "command": "npx", "args": ["-y", "@blockchainacademics/mcp"] } } } ``` Restart Claude Desktop. The demo path unlocks 10 marquee tools (`get_price`, `get_trending`, `get_fear_greed`, `get_market_overview`, `search_news`, `get_sentiment`, `get_entity`, `get_explainer`, `get_recent_stories`, `get_topic`) with real data and real citations. Shared rate cap: 100 calls/day globally + 20/day per IP. ### Claude Desktop (full 99 tools) Get a free key at [brain.blockchainacademics.com/signup](https://brain.blockchainacademics.com/signup?ref=mcp-npm-readme) (2,000 calls/month per user) and add the env block: ```json { "mcpServers": { "blockchainacademics": { "command": "npx", "args": ["-y", "@blockchainacademics/mcp"], "env": { "BCA_API_KEY": "bca_live_xxxxxxxxxxxxxxxx" } } } } ``` Restart Claude Desktop. All 99 tools appear in the tool picker. ### Programmatic (LangChain, Eliza, custom agents) ```bash npm install @blockchainacademics/mcp ``` ```ts import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; const transport = new StdioClientTransport({ command: "npx", args: ["-y", "@blockchainacademics/mcp"], env: { BCA_API_KEY: process.env.BCA_API_KEY! }, }); const client = new Client({ name: "my-agent", version: "0.0.1" }, { capabilities: {} }); await client.connect(transport); const res = await client.callTool({ name: "search_news", arguments: { query: "stablecoin regulation", limit: 5 }, }); console.log(res.content); ``` See [`examples/research-agent.ts`](./examples/research-agent.ts) for a full tool-chaining loop. ## Tools ### `search_news` Full-text search across 3,501+ editorial crypto articles. | arg | type | required | description | |---|---|---|---| | `query` | string (1-512) | yes | Search query | | `entity` | string | no | Entity slug filter (e.g. `ethereum`) | | `since` | ISO 8601 | no | Earliest publish date | | `topic` | string | no | Topic filter (e.g. `regulation`) | | `limit` | number (1-50) | no | Default 10 | Example: `{ "query": "circle IPO", "since": "2026-01-01T00:00:00Z", "limit": 5 }` ### `get_entity` Fetch a canonical entity dossier. Provide exactly one of: | arg | type | description | |---|---|---| | `slug` | string | e.g. `"vitalik-buterin"`, `"circle"` | | `ticker` | string | e.g. `"ETH"`, `"SOL"` (case-insensitive) | Aliases resolve automatically (`CZ` → `changpeng-zhao`, `Maker` → `makerdao`, `BSC` → `bnb-chain`, …). ### `get_explainer` Fetch a canonical academy lesson. Provide exactly one of: | arg | type | description | |---|---|---| | `slug` | string | Lesson slug, e.g. `"what-is-a-blockchain"` | | `topic` | string | Topic keyword that resolves to the canonical lesson | ## Attribution Every response includes a structured `attribution` block: ```json { "data": { ... }, "attribution": { "cite_url": "https://blockchainacademics.com/...", "as_of": "2026-04-19T12:34:56Z", "source_hash": "sha256:..." } } ``` When your agent surfaces BCA content to a user, attribute via the `cite_url`. Fields are preserved as `null` when upstream omits them so downstream agents can detect missing provenance. ## API Key **Not required to try it.** When `BCA_API_KEY` is unset, the server falls back to a baked-in public demo key that unlocks 10 marquee tools. See [Demo tier](#install) above. For the full 99 tools, get a free key at [brain.blockchainacademics.com/signup](https://brain.blockchainacademics.com/signup?ref=mcp-npm-apikey) (2,000 calls/month). Paid tiers unlock agent-backed research generation and proprietary on-chain indicators. Set `BCA_API_KEY` in your MCP client env. Optionally override `BCA_API_BASE` (default `https://api.blockchainacademics.com`). `BCA_API_BASE_URL` is also accepted for backward compatibility. ## Errors The server never crashes the stdio process. All failures surface as MCP responses with `isError: true` and a JSON body: ```json { "error": { "code": "BCA_AUTH", "message": "..." } } ``` | Code | Meaning | |---|---| | `BCA_AUTH` | Invalid `BCA_API_KEY` (HTTP 401/403) | | `BCA_TIER_LOCKED` | Tool not in your current tier's allowlist (HTTP 403). Demo tier sees this on 89 of the 99 tools — the error message includes the upgrade 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 | ## Development ```bash npm install npm run build # tsc -> dist/ npm test # node:test smoke suite npm run dev # tsx src/index.ts (stdio) ``` ### Pre-commit hooks This repo uses [`pre-commit`](https://pre-commit.com) to enforce formatting, lint, secret scanning, and large-file caps before every commit. Install once per clone: ```bash pip install pre-commit # or: brew install pre-commit pre-commit install # wires .git/hooks/pre-commit pre-commit run --all-files # optional: lint the full tree now ``` Hooks configured in [`.pre-commit-config.yaml`](./.pre-commit-config.yaml): `prettier --check`, `eslint`, `gitleaks`, `detect-private-key`, `check-added-large-files` (500KB cap). ## Security See [`SECURITY.md`](./SECURITY.md) for vulnerability reporting, supported versions, and our 90-day coordinated disclosure policy. ## License MIT © 2026 Blockchain Academics