BCA · Crypto Brain
DOCS · v1.0

Get up in 3 minutes.

Install the MCP or the CLI, set your key, register with your AI client. 99 tools available in natural language — or as first-class shell commands.

Quickstart

1 · Install

BASH
# MCP (Claude / Cursor / any MCP client)
npx -y @blockchainacademics/mcp

# or CLI (scripts / cron / notebooks)
pipx install bca-mcp

2 · Set your API key

BASH
bca login

# or set directly:
bca auth set-key --key "bca_live_..."
bca auth whoami
# → tier: pro · 99 tools available

3 · Register with your client

BASH
bca mcp install claude-code
# or: claude-desktop, cursor, vscode, openclaw

Then just ask: "Run DD on Hyperliquid." · "Get coverage index for $SOL." · "Trace the last whale outflow."

Before you startGet a key on pricing. Start free, no credit card. Free-tier tools (news, entities, spot prices, TVL) work without a key if you only hit the public endpoints.

Install

Two distribution channels, same endpoint, same envelope. Pick whichever fits your workflow — or use both; one API key works across all of them.

MCP (npm)

BASH
npx -y @blockchainacademics/mcp

Requires Node 18+. Or use pnpm add -g, yarn global add, bun add -g — whichever you prefer.

CLI (PyPI)

BASH
pipx install bca-mcp

Requires Python 3.10+. pipx installs in an isolated venv (recommended). pip install works too if you manage your own environments.

CLI quickstart

First-class shell access to all 99 tools. The CLI wraps the same HTTP API the MCP uses, with typed commands, tab-completion, and JSON/table output.

BASH
$ pipx install bca-mcp
$ bca login                                 # opens browser, stores key at ~/.bca/config.toml
$ bca news search "bitcoin etf" --limit 5   # first query
$ bca indicator coverage HYPE 7d            # proprietary signal
$ bca agent research --topic "perp-dex"     # async job, 2–5m

Every command supports --json (raw envelope), --as-of YYYY-MM-DD (time-travel, Enterprise tier), and --profile staging (switch between keys).

Authentication

One header: X-API-Key. Keys are scoped by tier (Free, Starter, Pro, Team, Enterprise). Both the CLI and MCP store your key locally at ~/.bca/config.toml and sign requests there. Your AI model never sees the key.

Config file

TOML · ~/.bca/config.toml
default_profile = "prod"

[profiles.prod]
api_key = "bca_live_xxxxxxxxxxxx"
base_url = "https://api.blockchainacademics.com"

[profiles.staging]
api_key = "bca_test_xxxxxxxxxxxx"
base_url = "https://staging-api.blockchainacademics.com"
SecurityKeys live on your machine. Nothing in your query history is shared with LLM providers by us. If you use a cloud-hosted AI client, check their policy — but the key itself never enters the model's context window.

Response envelope

Every tool returns the same shape. This is non-negotiable. Your agent doesn't have to learn six schemas for six vendors.

JSON
{
  "data": {
    // tool-specific payload
    "symbol": "HYPE",
    "coverage_index": 87.4,
    "sources": 14,
    "window_days": 7
  },
  "cite_url": "https://blockchainacademics.com/evidence/...",
  "as_of": "2026-04-20T17:32:11Z",
  "source_hash": "sha256:a3f2..c891"
}

Fields

  • data · tool-specific payload, always a JSON object
  • cite_url · human-readable evidence page with supporting articles and on-chain refs
  • as_of · ISO 8601 UTC timestamp of the data snapshot
  • source_hash · content-addressed hash for reproducibility. Replay later and diff.

Tiers & access

Tools are tagged by minimum tier. Calling a tool your key doesn't have access to returns HTTP 403 with an upgrade link.

  • FREE  ~28 tools · news, entities, academy, spot prices, TVL
  • STARTER  ~45 tools · adds candles, wallet lookups, risk scores, unlocks
  • PRO  ~75 tools · adds proprietary indicators + agent-backed reports
  • TEAM  ~90 tools · adds memos, theses, tokenomics sims, bulk export
  • ENTERPRISE  all 99 · as-of snapshots, custom tools, SLA, on-prem

See the full tool catalog for per-tool tier info, or the pricing page for feature comparison.

Async tools

Agent-backed tools (generate_research_report, generate_investment_memo, generate_trade_thesis, etc.) return a job ID immediately. Typical runtime: 2–5 minutes.

JSON · response
{
  "data": {
    "job_id": "job_a3f2c891",
    "status": "queued",
    "eta_seconds": 260
  },
  "as_of": "2026-04-20T17:32:11Z"
}

Poll get_agent_job_status with the job ID, or pass webhook_url when submitting to get notified on completion. Webhooks are preferred for production agents.

QuotaAsync jobs have a separate monthly quota. Pro: 10 jobs/day. Team: 50/day. Enterprise: custom.

Error handling

Errors return standard HTTP status codes with a consistent JSON body.

JSON · error response
{
  "error": {
    "code": "tier_insufficient",
    "message": "get_coverage_index requires tier: pro",
    "upgrade_url": "https://brain.blockchainacademics.com/pricing"
  },
  "as_of": "2026-04-20T17:32:11Z"
}

Status codes

  • 400 · invalid parameters or malformed query
  • 401 · missing or invalid API key
  • 403 · tier does not include this tool
  • 429 · rate limit exceeded (see Retry-After header)
  • 5xx · upstream provider or our infra. Safe to retry with exponential backoff.

Attribution contract

Free-tier responses include an attribution field with a human-readable credit line. If you surface BCA data to end-users on Free, you must render this string alongside the result. Paid tiers (Starter and up) make attribution optional — ship it if you want to, skip it if you don't.

The cite_url field is stable and safe to link publicly; it resolves to the evidence page backing that specific response.

Claude Code

Fastest setup. Run once and Claude Code registers the MCP in your project's .mcp.json.

BASH
bca mcp install claude-code

# now ask anything in Claude Code:
> Run full DD on Hyperliquid. Tokenomics, team, audit, risk.
> Which AI agent tokens have rising narrative strength this week?

Claude Desktop

Paste the snippet below into ~/Library/Application Support/Claude/claude_desktop_config.json on macOS (or the Windows / Linux equivalent). Restart Claude Desktop to pick up the new MCP.

JSON · claude_desktop_config.json
{
  "mcpServers": {
    "bca-crypto-brain": {
      "command": "npx",
      "args": ["-y", "@blockchainacademics/mcp"],
      "env": { "BCA_API_KEY": "bca_live_..." }
    }
  }
}

Or let the CLI patch it for you: bca mcp install claude-desktop.

Cursor

Cursor picks up MCP config from the workspace. Run the setup in your project root.

BASH
cd your-project/
bca mcp install cursor

LangChain

Use langchain-mcp-adapters to expose all 99 BCA tools to any LangChain agent — no glue wrappers required.

PYTHON
from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "bca": {
        "transport": "stdio",
        "command": "npx",
        "args": ["-y", "@blockchainacademics/mcp"],
        "env": {"BCA_API_KEY": "bca_live_..."},
    }
})

tools = await client.get_tools()
# → 99 MCP tools, typed + ready for any LangChain agent

Works identically with LangGraph, LlamaIndex (llama-index-tools-mcp), and any framework that understands MCP.

HTTP / REST

Every MCP tool is available as a REST endpoint if you don't use an MCP client or the CLI.

BASH
curl https://api.blockchainacademics.com/v1/indicators/coverage \
  -H "X-API-Key: bca_live_..." \
  -H "Content-Type: application/json" \
  -d '{"entity_slug": "hyperliquid", "window": "7d"}'

Full OpenAPI 3.1 spec: api.blockchainacademics.com/docs.

Environment variables

Everything in the config file is overridable via env. Useful for CI, Docker, and serverless deployments where you don't want to persist a config file.

ENV
BCA_API_KEY=bca_live_...
BCA_BASE_URL=https://api.blockchainacademics.com # override for staging / on-prem
BCA_PROFILE=prod # picks [profiles.prod] from config.toml
BCA_TIMEOUT_MS=30000 # per-request timeout
BCA_TELEMETRY=0 # opt out of anonymous usage pings

Rate limits

Per-second limits sized by tier. Headers on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

  • Free · 1 req/sec · 2,000 calls/mo
  • Starter · 5 req/sec · 25,000 calls/mo
  • Pro · 30 req/sec · 250,000 calls/mo
  • Team · 100 req/sec · 1,500,000 calls/mo
  • Enterprise · custom, negotiated per contract

Hitting the limit returns 429 with Retry-After. Use exponential backoff with jitter.

Webhooks

Subscribe to async job completion, narrative shifts, or alert thresholds. Payloads are signed with HMAC-SHA256; verify with the X-BCA-Signature header.

JSON · webhook payload
{
  "event": "job.completed",
  "job_id": "job_a3f2c891",
  "tool": "generate_research_report",
  "result_url": "https://api.blockchainacademics.com/v1/agents/jobs/job_a3f2c891",
  "completed_at": "2026-04-20T17:36:42Z"
}

Register webhooks via create_webhook or the dashboard. Retries: 5 attempts with exponential backoff over 24h. Failed deliveries are visible in the dashboard for debugging.

Docs — Install, auth, and query in 3 minutes · BCA Crypto Brain