Why Conyr for Agents
Most Solana APIs hand an agent rows and leave the judgment to the model. Conyr returns the judgment — who is behind a token, whether a wallet is actually skilled, whether the coordinated cluster is dumping right now, how much can be sold before the price gives way — with the evidence attached to every answer.
The packaging is agent-first: a hosted MCP server for tool use, an OpenAPI 3.1 contract for generated clients, plain-text context files for model ingestion, and tier-gated WebSocket streams for continuous state.
The surface, in numbers
| Surface | Live scope | Why it matters to an agent |
|---|---|---|
| MCP | 46 tools | 42 focused calls plus four multi-source dossiers, tier-gated per tool |
| REST | 39 /v1 operations | Deterministic reads with a typed OpenAPI contract |
| WebSocket | 13 channel families | Market, wallet, security, coordination, bundle, and dump events |
| Behavior model | 30 dimensions | Explainable nearest-neighbor wallet similarity |
| Token score | 6 dimensions | Confidence-weighted security, liquidity, distribution, momentum, trader quality, and behavior |
| Bundle model | 10 structural classifications | Execution-order, launch-cohort, sybil-poisoning, CEX-coordinated, hybrid, and synthetic-swarm structures on a seven-state lifecycle |
| Provenance graph | 20 hops | Funding traced through a curated, operator-maintained root set of CEX and infrastructure wallets |
These counts come from the live route registration, MCP catalog, and WebSocket dispatch — not a product roadmap. The OpenAPI file and the running router match one-for-one: no live-but-undocumented operation, no documented-but-dead one. Planned endpoints stay out of the machine contracts until they answer, so a generated client cannot contain a route that 404s.
Connect via MCP
claude mcp add --transport http conyr https://mcp.conyr.ai/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Then ask the agent to call token_deep_dive, token_coordination_report, wallet_overview, or wallet_network_report. Each dossier resolves its subject first — hand it a pool address and it reports on the canonical mint — then runs its independent readers concurrently and returns a failure-honest envelope:
{
"token": "<the canonical mint the report is about>",
"partial": false,
"sections": { "...": "typed section payloads" },
"errors": {},
"evidenceUrl": "https://conyr.ai/terminal/..."
}A failed section is null in sections and named in errors — never silently dropped. partial: true tells the model exactly what it is missing, and the sections that succeeded stay usable. Wallet dossiers echo "wallet" instead of "token".
Every MCP result ships three ways at once: the full structured payload, a one-line text summary for plain-text models, and a resource-link citation to the Conyr terminal page backing the answer. A tier-gated tool denies with a structured tier_insufficient object naming the required tier — not a protocol error.
Why the intelligence is different
- It resolves actors, not just addresses. Follow edges with confidence and per-token support, shared-funder and shared-execution entities, token campaigns, crowd state, and bundle membership are first-class API objects — cross-token by construction. Most flags on the market are mint-scoped snapshots; Conyr carries operator identity across launches.
- It measures skill at the position level.
/qualityreturns the position-correct win rate next to the commodity per-exit rate and names the gap:win_rate_inflation_pts. Conyr measured a leaderboard whale at a 44.6% per-exit win rate that collapsed to 1.96% position-correct — the number every other API reports was off by 22×. The skill formula is published in the endpoint reference, not calibrated in a black box. - It detects dumps from flow, not price. The
dump_alertchannel fires on the onset of coordinated selling — cluster sell flow measured against live inventory — so it leads the crash instead of confirming it. Price never enters the trigger. Dump and coordination surfaces describe observed structure, not intent; the MCP server’s shipped instructions say exactly that to your model. - It makes liquidity actionable. The live REST surface reports pool depth with staleness enforced, LP burn/lock status, coordinated-dump impact computed on real reserves, and sell capacity in SOL before 10%/25%/50% price impact. Where the pool shape is not a vetted constant-product, capacity is
null— no number rather than a wrong one. The LP event tape attributes every add and remove to bundle membership and flagged wallets at read time. - It preserves proof. Every wallet trade carries entry and exit signatures. Every bundle carries an evidence array of weighted, titled reason codes — 34 codes across execution, provenance, coordination, and behavior domains. Every MCP object result carries an
evidenceUrla human can open. - It distinguishes absence from failure. Composite tools expose partial sections and per-section errors. REST documents legitimate
nulland empty states instead of asking an agent to infer “clean” — null liquidity depth means missing, stale, or unsupported, never zero. Coordination rows carry adegradedflag, and/v1/coordination/healthpublishes the engine’s own drop counts. Ask a competitor for their error rate. - It runs from raw chain data. Every event is parsed from a self-hosted Yellowstone gRPC stream — 25 registered DEX programs, nine of them with dedicated instruction-level parsers, plus per-trade attribution to the terminal or bot router that placed it. No data vendor sits between the chain and the answer.
Choose the right interface
| Agent behavior | Interface |
|---|---|
| Broad natural-language investigation | Composite MCP tool |
| Focused lookup or follow-up question | Individual MCP tool |
| Deterministic typed execution | REST client generated from OpenAPI |
| Continuous monitoring | REST snapshot, then the relevant WebSocket channels |
| Model context bootstrapping | llms.txt or llms-full.txt |
Generate a REST client
openapi-python-client generate --url https://docs.conyr.ai/openapi.yamlMachine-readable resources
/v1 operations, each tagged with its tier.Base contracts
- REST base URL:
https://api.conyr.ai - MCP endpoint:
https://mcp.conyr.ai/mcp - WebSocket endpoint:
wss://api.conyr.ai/ws - Authentication:
Authorization: Bearer <API_KEY>
Every documented /v1, MCP, and WebSocket call requires a key; only /health, /ready, and /metrics are open. WebSocket access starts at Layer 1 — Free keys are rejected at the upgrade. REST and MCP budgets run 10 to 3,000 requests per minute by tier and are metered independently; connection and subscription caps live on the rate limits page.