# Conyr — Solana Intelligence for Agents > Agent-native Solana intelligence: 46 MCP tools, 39 live REST operations, 13 WebSocket channel families, 30-dimensional wallet behavior vectors, position-correct skill, actor-level coordination, bundle state, liquidity exit capacity, funding provenance, holders, and organic OHLCV. ## Machine interfaces - MCP: https://mcp.conyr.ai/mcp - REST: https://api.conyr.ai - WebSocket: wss://api.conyr.ai/ws - OpenAPI 3.1: https://docs.conyr.ai/openapi.yaml - Full LLM context: https://docs.conyr.ai/llms-full.txt - Agent docs: https://docs.conyr.ai/agents All MCP, `/v1/*`, and WebSocket requests require `Authorization: Bearer `. Only `/health`, `/ready`, and `/metrics` are unauthenticated. ## MCP: preferred interface for reasoning agents The hosted server exposes 46 tools: 42 focused tools and four composite dossiers. - `token_deep_dive` (L3): signal, bundles, holder labels/PnL, buyer quality, direct security row. - `token_coordination_report` (L3): campaigns, crowd, entity concentration, early clustered buyers, late-retail flow, wash patterns. - `wallet_overview` (L2): X-ray, coordination block, provenance, 30-day performance, similar wallets. - `wallet_network_report` (L3): follow edges, entity roster, bundle entanglement. Focused tools cover position-correct wallet quality, performance, trades, positions, X-ray, provenance, similarity, labels, holder PnL/breakdowns, bundles, six-dimensional token score, security rows, wash patterns, funding abuse, follow edges, coordination proof, entities, campaigns, crowd state, originators, cascades, and cross-token entity history. Every MCP object result includes `evidenceUrl`. Results carry full `structuredContent` plus a short text summary. Composite results use: ```json { "partial": false, "sections": {}, "errors": {}, "evidenceUrl": "https://conyr.ai/terminal/..." } ``` A failed composite section becomes `null`, sets `partial: true`, and appears in `errors`; successful sections remain usable. ## REST: 39 live `/v1` operations ### Free - GET `/v1/token/{mint}/buyer-quality` - GET `/v1/token/{mint}/bundles/summary` ### Layer 1 - GET `/v1/token/{mint}/info` — validation, suspicious, and high-risk state - GET `/v1/token/{mint}/ohlcv` - GET `/v1/token/{mint}/trades` - GET `/v1/token/{mint}/liquidity` - GET `/v1/token/{mint}/holders/summary` - GET `/v1/token/{mint}/holders/top` - GET `/v1/token/{mint}/holders` ### Layer 2 - GET `/v1/wallet/{address}/performance` - GET `/v1/wallet/{address}/trades` - GET `/v1/wallet/{address}/positions` - GET `/v1/wallet/{address}/labels` - GET `/v1/wallet/{address}/quality` - GET `/v1/wallet/{address}/profile` - GET `/v1/wallet/{address}/similar` - GET `/v1/wallet/{address}/provenance` - GET `/v1/leaderboard` ### Layer 3 - GET `/v1/token/{mint}/bundles` - GET `/v1/token/{mint}/bundles/{bundle_id}` - GET `/v1/token/{mint}/liquidity/events` - GET `/v1/token/{mint}/wash-trades` - GET `/v1/token/{mint}/funding-abuse` - GET `/v1/token/{mint}/suspicious-activity` - GET `/v1/wallet/{address}/entanglement` - GET `/v1/wallet/{address}/follows` - GET `/v1/wallet/{address}/entity` - GET `/v1/token/{mint}/campaigns` - GET `/v1/token/{mint}/crowd` - GET `/v1/entity/{entity_id}` - GET `/v1/entity/{entity_id}/members` - GET `/v1/coordination/health` - GET `/v1/intel/coordinated-pushes/forming` - GET `/v1/intel/wallet/{leader}/cascade` - GET `/v1/intel/entities/emerging` - GET `/v1/intel/token/{mint}/early-buyers` - GET `/v1/intel/token/{mint}/copy-originator` - GET `/v1/intel/token/{mint}/entity-concentration` - GET `/v1/intel/token/{mint}/late-retail` ## WebSocket: 13 channel families Layer 1: - `token:{mint}:trades` - `token:{mint}:ticks` - `token:{mint}:ohlcv:{view}:{tf}` where view = `full|filtered`, tf = `1s|1m|5m|15m|1h` Layer 2: - `wallet:{address}:pnl` - `wallet:{address}:positions` - `wallet:{address}:labels` Layer 3: - `token:{mint}:security` - `token:{mint}:campaign` - `token:{mint}:bundles` - `token:{mint}:dump_alert` - `wallet:{address}:security` - `wallet:{address}:follow` - `wallet:{address}:entity` Subscribe with: ```json {"op":"subscribe","channels":["token:MINT:bundles","token:MINT:dump_alert"]} ``` The Free tier has no WebSocket access. Connection caps: L1 5, L2 20, L3 50, Enterprise unlimited. Paid tiers allow 50 subscriptions per connection; Enterprise is unlimited. Slow consumers can lose messages, so reconcile state from REST. ## Differentiated intelligence - Wallet quality reports full-position win rate next to raw per-exit win rate and `win_rate_inflation_pts`, plus an explainable 0–100 skill score. - Wallet trades use FIFO cost basis and include entry/exit signatures, timestamps, realized PnL, hold time, gain, position/exit type, and DEXes. - Wallet labels classify trader type, performance (`BANNED|UNRATED|DORMANT|EARNER|UNPROFITABLE|BREAK_EVEN`), size, exit style, automation, tool use, freshness, farm funding, and badges. - Wallet profiles contain 30 behavior dimensions; similarity search uses those vectors and explains shared traits/differences. - Bundles expose 10 structural classifications plus member wallets, lifecycle, inventory, PnL, risk, evidence, and supply at risk. - Coordination exposes leader/follower edges, funding/execution entities, campaigns, crowd state, and raw proof rows. - Liquidity exposes current supported reserve depth, LP lock/burn state, coordinated-dump impact, and SOL sell capacity before 10%/25%/50% price impact. - LP events expose add/remove side, vault deltas, fractional pool share moved, full-close state, bundle membership, and flagged-wallet attribution. - Holders expose distinct count, top-10/50/100 concentration, and hydration state. - OHLCV exposes full and filtered views at 1s, 1m, 5m, 15m, and 1h. ## Agent safety and absence semantics - JSON `null`, an empty array, and a failed request are different states. - A null wallet label does not mean clean. - A wallet can lack a behavior vector when it is below activity thresholds. - `partial_forward` holder data is a lower bound. - Null liquidity depth means missing, stale, or unsupported—not zero liquidity. - Coordination detections describe observed structure, not intent or a trading recommendation. - The public REST contract does not expose a separate token-price or unrealized-PnL route. Use observed ticks/OHLCV and open-position cost basis when an agent needs to derive those values. ## Rate limits - Free: 10 REST/MCP requests per minute - Layer 1: 100/min - Layer 2: 300/min - Layer 3: 600/min - Enterprise: 3,000/min by default MCP and REST run independent limiter instances. Tier-insufficient REST calls return HTTP 403. MCP returns structured `tier_insufficient` errors.