CYCLOPS LABSDEVELOPERSFILE Nº D6

Build on
the record.

Everything Cyclops reads, from code: two SDKs, a server for AI agents, a drop-in warning for dApps, researcher SQL and Slack, with runnable examples and a changelog of every API change.

START

Three
steps.

  1. 01Read without a key: curl https://cyclopslabs.dev/api/v1/launches?limit=5.
  2. 02Get a key when you need higher limits or your own routes: a free key in 30 seconds, or one tied to your wallet’s tier on the account page. Send it as x-api-key.
  3. 03Find the call in the API reference, send it from the console, copy it as curl.
QUICKSTARTS

Pick your
client.

TYPESCRIPT · @cyclops/sdk
// packages/sdk-ts · zero dependencies · Node 18+, Deno, Bun, browsers
import { Cyclops } from '@cyclops/sdk';

const cx = new Cyclops({ apiKey: process.env.CYCLOPS_API_KEY });
const { launches } = await cx.launches({ outcome: 'collapsed', limit: 20 });
const read = await cx.inspect('0x…'); // token, wallet, contract or tx hash
const stop = cx.firehose((l) => console.log(l.symbol, l.firstMinute));
PYTHON · cyclops-sdk
# packages/sdk-py · standard library only · Python 3.9+
# pip install ./packages/sdk-py
import os
from cyclops_sdk import Cyclops

cx = Cyclops(api_key=os.environ.get("CYCLOPS_API_KEY"))
stats = cx.launch_stats()
read = cx.inspect("0x…")
for launch in cx.firehose():  # blocks; yields each new launch
    print(launch["symbol"], launch["firstMinute"])

Both SDKs live in the repository (packages/sdk-ts, packages/sdk-py) and are not on npm or PyPI yet. They return the API’s JSON unchanged and retry 429 and 503 answers after Retry-After.

MCP SERVER · CLAUDE DESKTOP, CLAUDE CODE, CURSOR
{
  "mcpServers": {
    "cyclops": {
      "command": "node",
      "args": ["/path/to/cyclops/packages/mcp/src/index.mjs"],
      "env": { "CYCLOPS_API_KEY": "cyc_…" }
    }
  }
}

Tools: scan, inspect, wallet, launches, creator. Stdio, no dependencies, Node 18+. See tools for AI agents for x402 pay-per-scan.

@CYCLOPS/WARN · REACT
import { CyclopsWarn } from '@cyclops/warn/react';

<CyclopsWarn address={tokenAddress} />
<CyclopsWarn address={tokenAddress} compact onResult={(s) => setNeedsConfirm(s.status === 'scanned' && s.label === 'High')} />
@CYCLOPS/WARN · ANY PAGE
<script type="module">
  import { defineCyclopsWarn } from '@cyclops/warn/element';
  defineCyclopsWarn();
</script>
<cyclops-warn address="0x…"></cyclops-warn>

A pre-trade warning next to a swap button: the stored scan’s label, score and top observations, or a plain “no stored scan” or “could not be reached”. It reads the cached explorer endpoint, never starts a scan, never blocks a trade and never calls a token free of risk. Source and props: packages/warn/README.md; not on npm yet.

MORE SURFACES

Beyond
the SDKs.

  • DOCResearcher SQL

    Read-only SQL over the research views, for Pro and research grants.

  • DOCSlack

    /cyclops in any channel, and alerts to team channels.

  • DOCWebhooks

    Signed alert and launch deliveries (POST /v1/me/webhooks), HMAC-SHA256 with a five-minute window.

  • DOCExplorer snippet

    Show the stored scan beside any address page.

  • DOCPre-launch API

    Check a contract before it trades (partners).

  • DOCAgents

    The MCP server and x402 pay-per-scan.

Zapier and n8n integrations on top of the webhooks are in the repository (packages/zapier-cyclops, packages/n8n-nodes-cyclops) and not listed in either directory yet.

EXAMPLES

Runnable,
no install.

  • examples/launch-watch

    The latest launches with first-minute stats, then 30-day outcomes. Public reads, no key.

    node examples/launch-watch/index.mjs
  • examples/outcomes-py

    Outcome shares for recent launches with the Python SDK.

    PYTHONPATH=packages/sdk-py python3 examples/outcomes-py/outcomes.py
  • examples/webhook-receiver

    A receiver that checks the x-cyclops-signature HMAC before trusting an alert.

    CYCLOPS_WEBHOOK_SECRET=whsec_… node examples/webhook-receiver/server.mjs
  • examples/research-sql

    A read-only SQL query over the research views, printed as a table.

    CYCLOPS_API_KEY=cyc_… node examples/research-sql/query.mjs

From a checkout of the repository. Each prints what the API returns and exits non-zero, saying why, when the API is unreachable.

CHANGELOG

What
changed.

Every public API change, from the repository history. Subscribe: Atom feed. Paths under /v1 keep their meaning; fields are added, never removed or retyped.

2026-10-29 · not yet deployed

Researcher SQL and the Slack app

Read-only SQL over published research views for Pro and research-grant wallets, with a row cap, a statement timeout, a planner cost cap and a daily quota. A Slack app with a /cyclops command and a Slack alert channel, switched off until the deployment has Slack credentials. Not yet deployed.

  • ΔAlert rules accept "slack" as a channel (POST /v1/me/rules, POST /v1/me/alerts/test).
7 endpoints added
  • GET/v1/research/schema
  • POST/v1/research/sql
  • POST/v1/me/slack/install
  • GET/v1/slack/oauth
  • GET/v1/me/slack
  • DELETE/v1/me/slack/{id}
  • POST/v1/slack/commands
2026-10-29 · commit d8a063d

Typed contract in the OpenAPI document

Twenty-nine public routes now publish request and response schemas in /v1/openapi.json, generated from the same zod objects the site’s client uses. The route table was split into domain modules with the same paths and match order; no public route moved or changed shape.

  • ΔGET /v1/openapi.json: parameters, request bodies and 200 responses carry JSON Schemas for the typed routes.
  • ΔToken scans report `phase` on progress events (fetch, decode, cluster, score, persist).
2026-10-29 · commit ace1707

Wave 3: deeper scanner, alerts inbox, growth and trust

Score explanations, swap tapes, proxy and approval audits, cabals, creator identity, survival curves, exits, incremental and verifiable scans, the alert inbox, teams, pre-launch checks, x402 pay-per-scan and instant keys.

58 endpoints added
  • GET/v1/token/{address}/explain
  • GET/v1/token/{address}/tape
  • GET/v1/contract/{address}/proxy
  • GET/v1/wallet/{address}/approvals
  • GET/v1/wallet/{address}/exits
  • GET/v1/cabals
  • GET/v1/creator/{address}/identity
  • GET/v1/survival
  • GET/v1/lockers
  • GET/v1/collapses
  • GET/v1/explorer/{address}
  • GET/v1/scan/{address}/diff
  • GET/v1/scan/{address}/verify
  • POST/v1/scan/{address}/rerun
  • GET/v1/live
  • GET/v1/rpc/health
  • GET/v1/slo
  • GET/v1/flags
  • GET/v1/ground-truth
  • GET/v1/score/bias
  • GET/v1/score/calibration
  • GET/v1/reports/quarterly
  • GET/v1/reports/quarters
  • GET/v1/me/inbox
  • GET/v1/me/inbox/count
  • POST/v1/me/inbox/read
  • POST/v1/me/inbox/delete
  • GET/v1/me/alert-prefs
  • POST/v1/me/alert-prefs
  • GET/v1/me/mutes
  • POST/v1/me/mutes
  • POST/v1/me/alerts/test
  • GET/v1/me/alerts/record
  • GET/v1/me/rules/{id}/template
  • GET/v1/rules/template/{code}
  • GET/v1/me/wallet-watch
  • POST/v1/me/wallet-watch
  • POST/v1/fates/changes
  • GET/v1/me/labels
  • PUT/v1/me/labels
  • GET/v1/me/keys/{id}/usage
  • POST/v1/keys/anonymous
  • POST/v1/keys/instant
  • POST/v1/prelaunch/check
  • POST/v1/partner/prelaunch
  • GET/v1/prelaunch/{id}
  • GET/v1/x402
  • GET/v1/x402/scan/{address}
  • POST/v1/me/data/delete
  • POST/v1/data/receipt/verify
  • GET/v1/corrections
  • POST/v1/corrections
  • GET/v1/incidents
  • POST/v1/teams
  • GET/v1/me/teams
  • GET/v1/kalshi/history
  • GET/v1/markets/feed
  • GET/v1/markets/books
2026-10-29 · commit c3a56af

Wave 2: alerts platform, labels, datasets, keys and the OpenAPI document

Alert rules, follows, webhooks and push; community labels; datasets; API keys; bulk inspect; receipts; AI summaries; the firehose; and the machine-readable spec.

41 endpoints added
  • GET/v1/openapi.json
  • GET/v1/me/rules
  • POST/v1/me/rules
  • DELETE/v1/me/rules/{id}
  • GET/v1/me/follows
  • POST/v1/me/follows
  • GET/v1/me/webhooks
  • POST/v1/me/webhooks
  • POST/v1/me/webhooks/{id}/test
  • GET/v1/push/key
  • POST/v1/me/push
  • GET/v1/me/keys
  • POST/v1/me/keys
  • DELETE/v1/me/keys/{id}
  • POST/v1/bulk/inspect
  • GET/v1/labels
  • POST/v1/labels/propose
  • POST/v1/labels/{id}/vote
  • GET/v1/datasets
  • GET/v1/datasets/{file}
  • GET/v1/firehose
  • GET/v1/firehose/recent
  • GET/v1/search
  • GET/v1/trail/{address}
  • GET/v1/creator/{address}
  • GET/v1/smart-money
  • GET/v1/flags/accuracy
  • POST/v1/flags/report
  • GET/v1/flags/reports
  • GET/v1/scan/{address}/receipt
  • GET/v1/receipts/key
  • GET/v1/score/changelog
  • GET/v1/token/{address}/holders/history
  • POST/v1/ai/summary
  • POST/v1/ai/ask
  • GET/v1/chains
  • GET/v1/queue
  • POST/v1/digest/subscribe
  • GET/v1/me/investigations
  • PUT/v1/me/investigations
  • POST/v1/discord/interactions
2026-10-29 · commit ce128bd

Streaming scans, history, reports and badges

Scans stream their progress as server-sent events; daily token history, weekly reports and the embeddable scan badge.

5 endpoints added
  • GET/v1/inspect/{q}/stream
  • GET/v1/token/{address}/history
  • GET/v1/reports
  • GET/v1/reports/weekly
  • GET/v1/badge/token/{file}
2026-10-28 · commit c7b4140

The on-chain scanner

Point the scanner at a token, wallet, contract or transaction on Robinhood Chain; launches with outcomes and the creator board.

7 endpoints added
  • GET/v1/inspect/{q}
  • GET/v1/scan/wallet/{address}
  • GET/v1/tx/{hash}
  • GET/v1/launches
  • GET/v1/launches/stats
  • GET/v1/devs
  • GET/v1/labels/{address}