{
  "markdown": "# @blockchainacademics/mcp\n\nThe 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.\n\n## Tool categories (v0.4.0)\n\n| Category | Count | Examples |\n|---|---|---|\n| Content & corpus | 7 | `search_news`, `get_article`, `get_entity`, `get_explainer`, `list_entity_mentions`, `get_as_of_snapshot` |\n| Market data | 4 | `get_price`, `get_ohlc`, `get_market_overview`, `get_pair_data` |\n| On-chain | 4 | `get_wallet_profile`, `get_tx`, `get_token_holders`, `get_defi_protocol` |\n| Sentiment | 3 | `get_sentiment`, `get_social_pulse`, `get_fear_greed` |\n| Proprietary indicators | 6 | `get_coverage_index`, `get_narrative_strength`, `get_sentiment_velocity`, `get_editorial_premium`, `get_kol_influence`, `get_risk_score` |\n| Agent-backed (async, Pro+) | 6 | `generate_due_diligence`, `generate_tokenomics_model`, `summarize_whitepaper`, `translate_contract`, `monitor_keyword`, `get_agent_job` |\n| Directories | 13 | `list_stablecoins`, `list_yields`, `list_aggregators`, `list_mcps`, `list_vcs`, `list_jobs`, `build_custom_indicator`, … |\n| Fundamentals | 6 | `get_tokenomics`, `get_audit_reports`, `get_team_info`, `compare_protocols`, `check_rugpull_risk` |\n| Chain-specific | 4 | `get_solana_ecosystem`, `get_l2_comparison`, `get_bitcoin_l2_status`, `get_ton_ecosystem` |\n| Markets microstructure | 5 | `get_funding_rates`, `get_options_flow`, `get_liquidation_heatmap`, `get_exchange_flows`, `predict_listing` |\n| Narrative / meta | 5 | `track_narrative`, `get_ai_agent_tokens`, `get_depin_projects`, `get_rwa_tokens`, `get_prediction_markets` |\n| Regulatory | 4 | `get_regulatory_status`, `track_sec_filings`, `get_mica_status`, `get_tax_rules` |\n| Security | 4 | `check_exploit_history`, `check_phishing_domain`, `get_bug_bounty_programs`, `scan_contract` |\n| Memes / degen | 4 | `track_pumpfun`, `track_bonkfun`, `check_memecoin_risk`, `get_degen_leaderboard` |\n| Services (revenue) | 3 | `book_kol_campaign`, `request_custom_research`, `submit_listing` |\n| History time-series | 4 | `get_history_prices`, `get_history_sentiment`, `get_history_correlation`, `get_history_coverage` |\n| Compute / AI crypto | 2 | `get_compute_pricing`, `get_ai_crypto_metrics` |\n| Corpus meta | 7 | `list_entities`, `get_topic`, `search_academy`, `get_trending`, `get_unified_feed`, `list_sources`, `get_recent_stories` |\n| Memos + theses + social | 6 | `list_memos`, `get_memo`, `list_theses`, `get_thesis`, `get_social_signals`, `get_social_signals_detail` |\n| Currencies | 2 | `list_currencies`, `get_currency_feed` |\n\nEvery tool response carries `cite_url` (with UTM src attribution), `as_of` (time-travel snapshot), and `source_hash` (content integrity).\n\nTools 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.\n\n## Why\n\nLLMs 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.\n\n## Install\n\n### Claude Desktop (zero-config demo)\n\nThe 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`):\n\n```json\n{\n  \"mcpServers\": {\n    \"blockchainacademics\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@blockchainacademics/mcp\"]\n    }\n  }\n}\n```\n\nRestart 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.\n\n### Claude Desktop (full 99 tools)\n\nGet 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:\n\n```json\n{\n  \"mcpServers\": {\n    \"blockchainacademics\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@blockchainacademics/mcp\"],\n      \"env\": { \"BCA_API_KEY\": \"bca_live_xxxxxxxxxxxxxxxx\" }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. All 99 tools appear in the tool picker.\n\n### Programmatic (LangChain, Eliza, custom agents)\n\n```bash\nnpm install @blockchainacademics/mcp\n```\n\n```ts\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\n\nconst transport = new StdioClientTransport({\n  command: \"npx\",\n  args: [\"-y\", \"@blockchainacademics/mcp\"],\n  env: { BCA_API_KEY: process.env.BCA_API_KEY! },\n});\nconst client = new Client({ name: \"my-agent\", version: \"0.0.1\" }, { capabilities: {} });\nawait client.connect(transport);\n\nconst res = await client.callTool({\n  name: \"search_news\",\n  arguments: { query: \"stablecoin regulation\", limit: 5 },\n});\nconsole.log(res.content);\n```\n\nSee [`examples/research-agent.ts`](./examples/research-agent.ts) for a full tool-chaining loop.\n\n## Tools\n\n### `search_news`\n\nFull-text search across 3,501+ editorial crypto articles.\n\n| arg | type | required | description |\n|---|---|---|---|\n| `query` | string (1-512) | yes | Search query |\n| `entity` | string | no | Entity slug filter (e.g. `ethereum`) |\n| `since` | ISO 8601 | no | Earliest publish date |\n| `topic` | string | no | Topic filter (e.g. `regulation`) |\n| `limit` | number (1-50) | no | Default 10 |\n\nExample: `{ \"query\": \"circle IPO\", \"since\": \"2026-01-01T00:00:00Z\", \"limit\": 5 }`\n\n### `get_entity`\n\nFetch a canonical entity dossier. Provide exactly one of:\n\n| arg | type | description |\n|---|---|---|\n| `slug` | string | e.g. `\"vitalik-buterin\"`, `\"circle\"` |\n| `ticker` | string | e.g. `\"ETH\"`, `\"SOL\"` (case-insensitive) |\n\nAliases resolve automatically (`CZ` → `changpeng-zhao`, `Maker` → `makerdao`, `BSC` → `bnb-chain`, …).\n\n### `get_explainer`\n\nFetch a canonical academy lesson. Provide exactly one of:\n\n| arg | type | description |\n|---|---|---|\n| `slug` | string | Lesson slug, e.g. `\"what-is-a-blockchain\"` |\n| `topic` | string | Topic keyword that resolves to the canonical lesson |\n\n## Attribution\n\nEvery response includes a structured `attribution` block:\n\n```json\n{\n  \"data\": { ... },\n  \"attribution\": {\n    \"cite_url\": \"https://blockchainacademics.com/...\",\n    \"as_of\": \"2026-04-19T12:34:56Z\",\n    \"source_hash\": \"sha256:...\"\n  }\n}\n```\n\nWhen 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.\n\n## API Key\n\n**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.\n\nFor 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.\n\nSet `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.\n\n## Errors\n\nThe server never crashes the stdio process. All failures surface as MCP responses with `isError: true` and a JSON body:\n\n```json\n{ \"error\": { \"code\": \"BCA_AUTH\", \"message\": \"...\" } }\n```\n\n| Code | Meaning |\n|---|---|\n| `BCA_AUTH` | Invalid `BCA_API_KEY` (HTTP 401/403) |\n| `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. |\n| `BCA_RATE_LIMIT` | Rate limit exceeded (HTTP 429 — honor `Retry-After`) |\n| `BCA_UPSTREAM` | BCA API returned 5xx or malformed JSON |\n| `BCA_NETWORK` | Network failure or 20s timeout exceeded |\n| `BCA_BAD_REQUEST` | Invalid tool arguments |\n\n## Development\n\n```bash\nnpm install\nnpm run build    # tsc -> dist/\nnpm test         # node:test smoke suite\nnpm run dev      # tsx src/index.ts (stdio)\n```\n\n### Pre-commit hooks\n\nThis 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:\n\n```bash\npip install pre-commit          # or: brew install pre-commit\npre-commit install              # wires .git/hooks/pre-commit\npre-commit run --all-files      # optional: lint the full tree now\n```\n\nHooks configured in [`.pre-commit-config.yaml`](./.pre-commit-config.yaml): `prettier --check`, `eslint`, `gitleaks`, `detect-private-key`, `check-added-large-files` (500KB cap).\n\n## Security\n\nSee [`SECURITY.md`](./SECURITY.md) for vulnerability reporting, supported versions, and our 90-day coordinated disclosure policy.\n\n## License\n\nMIT © 2026 Blockchain Academics\n",
  "bytes": 9196,
  "sha": "1da2d0be2e29daf8c02dafc038209c625303ae580f9c4ee59d0c37c92e18ee90",
  "repo_slug": "blockchainacademics/bca-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_blockchainacademics_mcp_ce9958bb/readme"
}