@0xinsider/mcp 2.12.0 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2352,7 +2352,7 @@ export type Trader = {
2352
2352
  description?: string;
2353
2353
  confidence?: number;
2354
2354
  };
2355
- /** Per-category performance breakdown (expand=categories or expand[]=categories). Omitted unless expanded. Object keyed by category name; each value is the precomputed trader_rankings.category_ranks payload (rank, total_in_category, total_pnl, scaled_total_pnl, n_markets, wins, losses, win_rate; scaled_total_pnl is a legacy alias that currently equals total_pnl). BASIS: the calibration sample, which admits a position only above a 20 USD notional floor and with a chosen-side entry price strictly inside (0,1), because the ranks and the calibration edge derived from it depend on both rules. That is a different sample from GET /api/v1/trader/{address}/categories, which counts every settled market at any size, and the two differ in both directions. Measured on production 2026-09-22 over the 122,497 wallet-category pairs with at least 20 decided markets on both bases: the floored rate was higher in 56.5% of pairs, lower in 34.5% and equal in 9.0%, median +0.6 points, p10 -4.6, p90 +9.8, and 14.0% of pairs differ by 10 points or more. The difference is not only small positions: on a 1-in-250 wallet sample the same day, admitted markets won 56.6% while markets dropped by the notional floor alone won 45.2% and markets dropped by the entry-price rule alone won 48.7%. n_markets counts every admitted market including the ones that resolved at exactly zero P&L, so it is not the denominator of win_rate: it differed from wins + losses in 15.8% of pairs with at least 5 decided markets. The two tables also run on different clocks, this one updated incrementally and that route rebuilt daily, so a same-day read can differ on timing alone. Use this for rank context and that route for the wallet's plain record. Pass-through DB JSON: keys and value shape are DB-owned, so the inner shape is intentionally unconstrained and may carry additional compatibility fields. */
2355
+ /** Per-category performance breakdown (expand=categories or expand[]=categories). Omitted unless expanded. Object keyed by category name; each value is the precomputed trader_rankings.category_ranks payload (rank, total_in_category, total_pnl, scaled_total_pnl, n_markets, wins, losses, win_rate; scaled_total_pnl is a legacy alias that currently equals total_pnl). RANK BASIS: rank and total_in_category use the same hourly breakpoint publication; categories absent from that publication are omitted until a later publication includes them. Current trader performance values update separately, so this is not a frozen historical record. BASIS: the calibration sample, which admits a position only above a 20 USD notional floor and with a chosen-side entry price strictly inside (0,1), because the ranks and the calibration edge derived from it depend on both rules. That is a different sample from GET /api/v1/trader/{address}/categories, which counts every settled market at any size, and the two differ in both directions. Measured on production 2026-09-22 over the 122,497 wallet-category pairs with at least 20 decided markets on both bases: the floored rate was higher in 56.5% of pairs, lower in 34.5% and equal in 9.0%, median +0.6 points, p10 -4.6, p90 +9.8, and 14.0% of pairs differ by 10 points or more. The difference is not only small positions: on a 1-in-250 wallet sample the same day, admitted markets won 56.6% while markets dropped by the notional floor alone won 45.2% and markets dropped by the entry-price rule alone won 48.7%. n_markets counts every admitted market including the ones that resolved at exactly zero P&L, so it is not the denominator of win_rate: it differed from wins + losses in 15.8% of pairs with at least 5 decided markets. The two tables also run on different clocks, this one updated incrementally and that route rebuilt daily, so a same-day read can differ on timing alone. Use this for rank context and that route for the wallet's plain record. Pass-through DB JSON: keys and value shape are DB-owned, so the inner shape is intentionally unconstrained and may carry additional compatibility fields. */
2356
2356
  category_strengths?: Record<string, unknown>;
2357
2357
  /** Curated advanced risk/performance metrics (expand=quant_metrics or expand[]=quant_metrics). Omitted unless expanded and backed by a computed row strictly under six hours old; a missing row, NULL computed_at, or age of exactly six hours or more is stale and omitted. Provider-input changes may intentionally lag inside the bounded six-hour window. When present, all listed fields are present (each is a number or null); null means insufficient trade history and must not be treated as 0. The fixed field shape is unchanged. */
2358
2358
  quant_metrics?: {
@@ -2950,6 +2950,136 @@ export type WebhookVerification = {
2950
2950
  token: string;
2951
2951
  expires_at: string;
2952
2952
  };
2953
+ export type WhaleDatasetArtifactManifest = {
2954
+ /** Version of the artifact manifest contract. */
2955
+ manifest_version: string;
2956
+ format: "ndjson";
2957
+ schema_version: "whale_dataset_v1";
2958
+ coverage: "best_effort_detected_whale_alerts";
2959
+ generation: WhaleDatasetGeneration;
2960
+ /** Number of trade rows written. */
2961
+ row_count: number;
2962
+ /** Exact byte count of the decompressed content stream clients receive. */
2963
+ content_size_bytes: number;
2964
+ /** Lowercase SHA-256 of the decompressed content bytes. */
2965
+ content_sha256: string;
2966
+ /** Exact byte count of the gzip-compressed bytes stored by the object provider. */
2967
+ compressed_size_bytes: number;
2968
+ /** Lowercase SHA-256 of the stored gzip bytes; the multipart ETag is not used as this checksum. */
2969
+ compressed_sha256: string;
2970
+ };
2971
+ export type WhaleDatasetContinuation = {
2972
+ path: "/api/v1/events/feed/since";
2973
+ /** Opaque commit-safe replay cursor; replay the same condition_id and min_size. */
2974
+ cursor: string;
2975
+ /** Writer floor included by the replay cursor. It can precede the snapshot horizon to include arrivals after the finite window end. */
2976
+ from_commit_xid: string;
2977
+ condition_id: string | null;
2978
+ /** Normalized USD threshold; pass it to the replay query. */
2979
+ min_size: string | null;
2980
+ deduplication_identity: string;
2981
+ time_window_applies_to_deltas: false;
2982
+ delivery: string;
2983
+ };
2984
+ /** Normalized immutable request; [from, to), maximum 31 days; min_size rounded to cents like durable replay. */
2985
+ export type WhaleDatasetFilters = {
2986
+ from: string;
2987
+ to: string;
2988
+ condition_id: string | null;
2989
+ min_size_cents: number | null;
2990
+ };
2991
+ export type WhaleDatasetGeneration = {
2992
+ dataset_schema_version: "whale_dataset_v1";
2993
+ id: string;
2994
+ selected_at: string;
2995
+ consistency: "repeatable_read_commit_horizon";
2996
+ filters: WhaleDatasetFilters;
2997
+ /** All snapshot rows have a writer xid strictly below this closed visibility horizon. Decimal string preserves integer precision. */
2998
+ commit_horizon_xid: string;
2999
+ continuation: WhaleDatasetContinuation;
3000
+ source: "whale_alerts";
3001
+ /** Best-effort detected whale alerts only; not all provider fills. No trader or market enrichment. */
3002
+ coverage: string;
3003
+ expires_at: string;
3004
+ extraction_elapsed_ms: number;
3005
+ };
3006
+ export type WhaleDatasetJob = {
3007
+ object: "whale_dataset_job";
3008
+ data: {
3009
+ job_id: number;
3010
+ /** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
3011
+ status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
3012
+ format: "ndjson";
3013
+ total_trades: number | null;
3014
+ processed_trades: number | null;
3015
+ file_size: number | null;
3016
+ error: string | null;
3017
+ /** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
3018
+ terminal: boolean;
3019
+ /** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
3020
+ next_action: "poll" | "download" | "resubmit";
3021
+ /** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
3022
+ poll_after_s?: number;
3023
+ created_at: string;
3024
+ /** When the worker last claimed the job; null while queued. */
3025
+ started_at: string | null;
3026
+ /** When the file became downloadable. null before ready, and on jobs finalized before this field existed. */
3027
+ ready_at: string | null;
3028
+ failed_at: string | null;
3029
+ /** The retention window: 24 hours from submit. A ready file downloads until this instant; a job that has not reached ready by it fails. A reused job (200 on submit) keeps its original window. */
3030
+ expires_at: string;
3031
+ /** When the job became expired; null until then. */
3032
+ expired_at: string | null;
3033
+ /** Snapshot selection clock, null until the artifact is written; not provider completeness. */
3034
+ data_as_of: string | null;
3035
+ /** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
3036
+ cancel_requested_at: string | null;
3037
+ /** When the job reached cancelled; null until then. */
3038
+ cancelled_at: string | null;
3039
+ /** Worker claims so far. */
3040
+ attempt: number;
3041
+ /** The job fails when attempt reaches this. */
3042
+ max_attempts: number;
3043
+ /** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
3044
+ artifact?: {
3045
+ /** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
3046
+ artifact_id: string;
3047
+ /** The storage ETag of the object. */
3048
+ etag: string | null;
3049
+ /** Bytes on the wire (gzip); file_size is the decompressed size. */
3050
+ compressed_size_bytes: number | null;
3051
+ content_type: "application/x-ndjson";
3052
+ content_encoding: "gzip";
3053
+ /** Immutable source, window, replay handoff, count and hashes of both content and gzip bytes. */
3054
+ manifest: WhaleDatasetArtifactManifest | null;
3055
+ };
3056
+ filters: WhaleDatasetFilters;
3057
+ };
3058
+ meta: ResponseMeta;
3059
+ };
3060
+ export type WhaleDatasetTrade = {
3061
+ /** wt_<whale_alert_id>; deduplication identity shared with expanded replay. */
3062
+ id: string;
3063
+ /** Decimal whale-alert ID. */
3064
+ sequence: string;
3065
+ /** trd_<local trader ID>. */
3066
+ trader_id: string;
3067
+ condition_id: string;
3068
+ platform: "polymarket";
3069
+ traded_at: string;
3070
+ side: "BUY" | "SELL";
3071
+ /** Provider outcome index, null before the canonical outcome trust boundary. */
3072
+ outcome_index: number | null;
3073
+ /** Exact stored NUMERIC price; decimal string. */
3074
+ price: string;
3075
+ /** Exact stored NUMERIC USD notional; decimal string. */
3076
+ size_usd: string;
3077
+ /** Writer transaction ID, decimal string. */
3078
+ inserted_xid: string;
3079
+ /** Stored source trade identity. */
3080
+ trade_event_id: string;
3081
+ source_trade_ingested_at: string | null;
3082
+ };
2953
3083
  /**
2954
3084
  * The `data` payload each operation answers with: what
2955
3085
  * `ApiClient.call<T>` resolves to, and the default `T` of every
@@ -3009,6 +3139,56 @@ export interface OperationData {
3009
3139
  manifest: TraderExportArtifactManifest | null;
3010
3140
  };
3011
3141
  };
3142
+ cancelWhaleDataset: {
3143
+ job_id: number;
3144
+ /** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
3145
+ status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
3146
+ format: "ndjson";
3147
+ total_trades: number | null;
3148
+ processed_trades: number | null;
3149
+ file_size: number | null;
3150
+ error: string | null;
3151
+ /** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
3152
+ terminal: boolean;
3153
+ /** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
3154
+ next_action: "poll" | "download" | "resubmit";
3155
+ /** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
3156
+ poll_after_s?: number;
3157
+ created_at: string;
3158
+ /** When the worker last claimed the job; null while queued. */
3159
+ started_at: string | null;
3160
+ /** When the file became downloadable. null before ready, and on jobs finalized before this field existed. */
3161
+ ready_at: string | null;
3162
+ failed_at: string | null;
3163
+ /** The retention window: 24 hours from submit. A ready file downloads until this instant; a job that has not reached ready by it fails. A reused job (200 on submit) keeps its original window. */
3164
+ expires_at: string;
3165
+ /** When the job became expired; null until then. */
3166
+ expired_at: string | null;
3167
+ /** Snapshot selection clock, null until the artifact is written; not provider completeness. */
3168
+ data_as_of: string | null;
3169
+ /** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
3170
+ cancel_requested_at: string | null;
3171
+ /** When the job reached cancelled; null until then. */
3172
+ cancelled_at: string | null;
3173
+ /** Worker claims so far. */
3174
+ attempt: number;
3175
+ /** The job fails when attempt reaches this. */
3176
+ max_attempts: number;
3177
+ /** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
3178
+ artifact?: {
3179
+ /** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
3180
+ artifact_id: string;
3181
+ /** The storage ETag of the object. */
3182
+ etag: string | null;
3183
+ /** Bytes on the wire (gzip); file_size is the decompressed size. */
3184
+ compressed_size_bytes: number | null;
3185
+ content_type: "application/x-ndjson";
3186
+ content_encoding: "gzip";
3187
+ /** Immutable source, window, replay handoff, count and hashes of both content and gzip bytes. */
3188
+ manifest: WhaleDatasetArtifactManifest | null;
3189
+ };
3190
+ filters: WhaleDatasetFilters;
3191
+ };
3012
3192
  createMcpJsonRpcResponse: {
3013
3193
  jsonrpc: "2.0";
3014
3194
  id: string | number | null;
@@ -3173,6 +3353,56 @@ export interface OperationData {
3173
3353
  };
3174
3354
  getWebhook: WebhookEndpoint;
3175
3355
  getWeeklyReportSnapshot: ReportSnapshot;
3356
+ getWhaleDatasetStatus: {
3357
+ job_id: number;
3358
+ /** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
3359
+ status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
3360
+ format: "ndjson";
3361
+ total_trades: number | null;
3362
+ processed_trades: number | null;
3363
+ file_size: number | null;
3364
+ error: string | null;
3365
+ /** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
3366
+ terminal: boolean;
3367
+ /** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
3368
+ next_action: "poll" | "download" | "resubmit";
3369
+ /** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
3370
+ poll_after_s?: number;
3371
+ created_at: string;
3372
+ /** When the worker last claimed the job; null while queued. */
3373
+ started_at: string | null;
3374
+ /** When the file became downloadable. null before ready, and on jobs finalized before this field existed. */
3375
+ ready_at: string | null;
3376
+ failed_at: string | null;
3377
+ /** The retention window: 24 hours from submit. A ready file downloads until this instant; a job that has not reached ready by it fails. A reused job (200 on submit) keeps its original window. */
3378
+ expires_at: string;
3379
+ /** When the job became expired; null until then. */
3380
+ expired_at: string | null;
3381
+ /** Snapshot selection clock, null until the artifact is written; not provider completeness. */
3382
+ data_as_of: string | null;
3383
+ /** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
3384
+ cancel_requested_at: string | null;
3385
+ /** When the job reached cancelled; null until then. */
3386
+ cancelled_at: string | null;
3387
+ /** Worker claims so far. */
3388
+ attempt: number;
3389
+ /** The job fails when attempt reaches this. */
3390
+ max_attempts: number;
3391
+ /** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
3392
+ artifact?: {
3393
+ /** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
3394
+ artifact_id: string;
3395
+ /** The storage ETag of the object. */
3396
+ etag: string | null;
3397
+ /** Bytes on the wire (gzip); file_size is the decompressed size. */
3398
+ compressed_size_bytes: number | null;
3399
+ content_type: "application/x-ndjson";
3400
+ content_encoding: "gzip";
3401
+ /** Immutable source, window, replay handoff, count and hashes of both content and gzip bytes. */
3402
+ manifest: WhaleDatasetArtifactManifest | null;
3403
+ };
3404
+ filters: WhaleDatasetFilters;
3405
+ };
3176
3406
  getWhaleTrade: LargeTradeDetail;
3177
3407
  listGames: Game[];
3178
3408
  listInsiderRadar: SuspiciousTrade[];
@@ -3254,6 +3484,56 @@ export interface OperationData {
3254
3484
  manifest: TraderExportArtifactManifest | null;
3255
3485
  };
3256
3486
  };
3487
+ submitWhaleDataset: {
3488
+ job_id: number;
3489
+ /** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
3490
+ status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
3491
+ format: "ndjson";
3492
+ total_trades: number | null;
3493
+ processed_trades: number | null;
3494
+ file_size: number | null;
3495
+ error: string | null;
3496
+ /** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
3497
+ terminal: boolean;
3498
+ /** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
3499
+ next_action: "poll" | "download" | "resubmit";
3500
+ /** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
3501
+ poll_after_s?: number;
3502
+ created_at: string;
3503
+ /** When the worker last claimed the job; null while queued. */
3504
+ started_at: string | null;
3505
+ /** When the file became downloadable. null before ready, and on jobs finalized before this field existed. */
3506
+ ready_at: string | null;
3507
+ failed_at: string | null;
3508
+ /** The retention window: 24 hours from submit. A ready file downloads until this instant; a job that has not reached ready by it fails. A reused job (200 on submit) keeps its original window. */
3509
+ expires_at: string;
3510
+ /** When the job became expired; null until then. */
3511
+ expired_at: string | null;
3512
+ /** Snapshot selection clock, null until the artifact is written; not provider completeness. */
3513
+ data_as_of: string | null;
3514
+ /** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
3515
+ cancel_requested_at: string | null;
3516
+ /** When the job reached cancelled; null until then. */
3517
+ cancelled_at: string | null;
3518
+ /** Worker claims so far. */
3519
+ attempt: number;
3520
+ /** The job fails when attempt reaches this. */
3521
+ max_attempts: number;
3522
+ /** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
3523
+ artifact?: {
3524
+ /** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
3525
+ artifact_id: string;
3526
+ /** The storage ETag of the object. */
3527
+ etag: string | null;
3528
+ /** Bytes on the wire (gzip); file_size is the decompressed size. */
3529
+ compressed_size_bytes: number | null;
3530
+ content_type: "application/x-ndjson";
3531
+ content_encoding: "gzip";
3532
+ /** Immutable source, window, replay handoff, count and hashes of both content and gzip bytes. */
3533
+ manifest: WhaleDatasetArtifactManifest | null;
3534
+ };
3535
+ filters: WhaleDatasetFilters;
3536
+ };
3257
3537
  updateWebhook: WebhookEndpoint;
3258
3538
  verifyWebhook: WebhookEndpoint;
3259
3539
  }
@@ -3267,6 +3547,7 @@ export interface OperationQuery {
3267
3547
  /** Export job id returned by the submit route. */
3268
3548
  job_id: number;
3269
3549
  };
3550
+ cancelWhaleDataset: Record<string, never>;
3270
3551
  createMcpJsonRpcResponse: Record<string, never>;
3271
3552
  createWebhook: Record<string, never>;
3272
3553
  deleteWebhook: Record<string, never>;
@@ -3304,8 +3585,8 @@ export interface OperationQuery {
3304
3585
  condition_id?: string;
3305
3586
  /** Only trades by wallets at this grade or better (S best), read from the wallet's newest ranking at request time; a wallet with no grade never passes. Bound to the cursor. */
3306
3587
  min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
3307
- /** Only trades of at least this size in USD (compared in cents). Bound to the cursor. */
3308
- min_size?: number;
3588
+ /** Only trades of at least this USD amount. Decimal and scientific query spellings normalize exactly to cents, rounding half away from zero; maximum 1e15 USD. Pass the dataset continuation decimal string unchanged to preserve the bound. Bound to the cursor. */
3589
+ min_size?: number | string;
3309
3590
  /** Backward-compatible alias for expand. Repeatable: trade. */
3310
3591
  "expand[]"?: "trade"[];
3311
3592
  /** Repeatable. trade adds the public trade read to every event (the object GET /api/v1/whale-trades/{id} returns for it), from one query per page, so a page of 100 events needs no per-event detail request. Not bound to the cursor: switch it on or off mid-walk. */
@@ -3438,6 +3719,7 @@ export interface OperationQuery {
3438
3719
  /** ISO week selector in YYYY-WW format; alternative to from/to. Selects a durable canonical snapshot. A week that ends before 2024-03-01, the first day report data covers, or starts after tomorrow UTC returns 400 bad_request with error.param=week. */
3439
3720
  week?: string;
3440
3721
  };
3722
+ getWhaleDatasetStatus: Record<string, never>;
3441
3723
  getWhaleTrade: Record<string, never>;
3442
3724
  listGames: {
3443
3725
  /** Canonical sport bucket, case-insensitive, with - and _ read as a space: table-tennis and Table Tennis are the same bucket. Omit for every covered sport. A bucket this deployment does not serve returns an empty page. */
@@ -3774,6 +4056,7 @@ export interface OperationQuery {
3774
4056
  /** true: do not reuse a finished, running or reconciling job; only a queued job is reused, so the file is a snapshot read after this submit. Consumes quota when nothing is queued. Default false. */
3775
4057
  fresh?: boolean;
3776
4058
  };
4059
+ submitWhaleDataset: Record<string, never>;
3777
4060
  updateWebhook: Record<string, never>;
3778
4061
  verifyWebhook: Record<string, never>;
3779
4062
  }
@@ -3790,6 +4073,10 @@ export interface OperationPath {
3790
4073
  /** Trader wallet address (0x...), known trader username-style lookup, or trd_-prefixed trader ID emitted by this API. */
3791
4074
  address: string;
3792
4075
  };
4076
+ cancelWhaleDataset: {
4077
+ /** Dataset job ID returned by submit; another owner or a trader export returns 404. */
4078
+ job_id: number;
4079
+ };
3793
4080
  createMcpJsonRpcResponse: Record<string, never>;
3794
4081
  createWebhook: Record<string, never>;
3795
4082
  deleteWebhook: {
@@ -3896,6 +4183,10 @@ export interface OperationPath {
3896
4183
  id: number;
3897
4184
  };
3898
4185
  getWeeklyReportSnapshot: Record<string, never>;
4186
+ getWhaleDatasetStatus: {
4187
+ /** Dataset job ID returned by submit; another owner or a trader export returns 404. */
4188
+ job_id: number;
4189
+ };
3899
4190
  getWhaleTrade: {
3900
4191
  /** Raw whale_alerts.id or wt_-prefixed whale trade id. */
3901
4192
  id: string;
@@ -3968,6 +4259,7 @@ export interface OperationPath {
3968
4259
  /** Trader wallet address (0x...), known trader username-style lookup, or trd_-prefixed trader ID emitted by this API. */
3969
4260
  address: string;
3970
4261
  };
4262
+ submitWhaleDataset: Record<string, never>;
3971
4263
  updateWebhook: {
3972
4264
  /** Webhook endpoint id owned by the authenticated API key user. */
3973
4265
  id: number;
@@ -3999,6 +4291,7 @@ export interface OperationBody {
3999
4291
  expand?: ("strategy" | "categories" | "quant_metrics" | "trust")[];
4000
4292
  };
4001
4293
  cancelTraderExport: never;
4294
+ cancelWhaleDataset: never;
4002
4295
  createMcpJsonRpcResponse: {
4003
4296
  /** JSON-RPC protocol version; this server accepts 2.0. */
4004
4297
  jsonrpc: "2.0";
@@ -4048,6 +4341,7 @@ export interface OperationBody {
4048
4341
  getUsage: never;
4049
4342
  getWebhook: never;
4050
4343
  getWeeklyReportSnapshot: never;
4344
+ getWhaleDatasetStatus: never;
4051
4345
  getWhaleTrade: never;
4052
4346
  listGames: never;
4053
4347
  listInsiderRadar: never;
@@ -4081,6 +4375,14 @@ export interface OperationBody {
4081
4375
  searchContent: never;
4082
4376
  searchMarkets: never;
4083
4377
  submitTraderExport: never;
4378
+ submitWhaleDataset: {
4379
+ from: string;
4380
+ to: string;
4381
+ /** Raw provider condition id or mkt_-prefixed id. */
4382
+ condition_id?: string;
4383
+ /** USD minimum, normalized to cents like replay. */
4384
+ min_size?: number;
4385
+ };
4084
4386
  updateWebhook: UpdateWebhookRequest;
4085
4387
  verifyWebhook: VerifyWebhookRequest;
4086
4388
  }
@@ -4111,6 +4413,7 @@ export interface OperationResponse {
4111
4413
  meta: BatchResponseMeta;
4112
4414
  };
4113
4415
  cancelTraderExport: TraderExportJob;
4416
+ cancelWhaleDataset: WhaleDatasetJob;
4114
4417
  createMcpJsonRpcResponse: {
4115
4418
  jsonrpc: "2.0";
4116
4419
  id: string | number | null;
@@ -4320,6 +4623,7 @@ export interface OperationResponse {
4320
4623
  data: OperationData["getWeeklyReportSnapshot"];
4321
4624
  meta: ResponseMeta;
4322
4625
  };
4626
+ getWhaleDatasetStatus: WhaleDatasetJob;
4323
4627
  getWhaleTrade: {
4324
4628
  object: "whale_trade";
4325
4629
  data: OperationData["getWhaleTrade"];
@@ -4591,6 +4895,7 @@ export interface OperationResponse {
4591
4895
  meta: ResponseMeta;
4592
4896
  };
4593
4897
  submitTraderExport: TraderExportJob;
4898
+ submitWhaleDataset: WhaleDatasetJob;
4594
4899
  updateWebhook: {
4595
4900
  object: "webhook";
4596
4901
  data: OperationData["updateWebhook"];