@guiie/buda-mcp 1.2.2 → 1.4.0

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/PUBLISH_CHECKLIST.md +71 -63
  3. package/README.md +4 -4
  4. package/dist/http.js +39 -0
  5. package/dist/index.js +29 -0
  6. package/dist/tools/arbitrage.d.ts +35 -0
  7. package/dist/tools/arbitrage.d.ts.map +1 -0
  8. package/dist/tools/arbitrage.js +142 -0
  9. package/dist/tools/balances.d.ts.map +1 -1
  10. package/dist/tools/balances.js +24 -4
  11. package/dist/tools/calculate_position_size.d.ts +48 -0
  12. package/dist/tools/calculate_position_size.d.ts.map +1 -0
  13. package/dist/tools/calculate_position_size.js +111 -0
  14. package/dist/tools/compare_markets.d.ts.map +1 -1
  15. package/dist/tools/compare_markets.js +11 -10
  16. package/dist/tools/dead_mans_switch.d.ts +84 -0
  17. package/dist/tools/dead_mans_switch.d.ts.map +1 -0
  18. package/dist/tools/dead_mans_switch.js +236 -0
  19. package/dist/tools/market_sentiment.d.ts +30 -0
  20. package/dist/tools/market_sentiment.d.ts.map +1 -0
  21. package/dist/tools/market_sentiment.js +104 -0
  22. package/dist/tools/market_summary.d.ts +43 -0
  23. package/dist/tools/market_summary.d.ts.map +1 -0
  24. package/dist/tools/market_summary.js +81 -0
  25. package/dist/tools/markets.d.ts.map +1 -1
  26. package/dist/tools/markets.js +4 -2
  27. package/dist/tools/orderbook.d.ts.map +1 -1
  28. package/dist/tools/orderbook.js +14 -4
  29. package/dist/tools/orders.d.ts.map +1 -1
  30. package/dist/tools/orders.js +41 -3
  31. package/dist/tools/price_history.d.ts.map +1 -1
  32. package/dist/tools/price_history.js +5 -43
  33. package/dist/tools/simulate_order.d.ts +45 -0
  34. package/dist/tools/simulate_order.d.ts.map +1 -0
  35. package/dist/tools/simulate_order.js +139 -0
  36. package/dist/tools/spread.d.ts.map +1 -1
  37. package/dist/tools/spread.js +10 -8
  38. package/dist/tools/technical_indicators.d.ts +39 -0
  39. package/dist/tools/technical_indicators.d.ts.map +1 -0
  40. package/dist/tools/technical_indicators.js +223 -0
  41. package/dist/tools/ticker.d.ts.map +1 -1
  42. package/dist/tools/ticker.js +24 -3
  43. package/dist/tools/trades.d.ts.map +1 -1
  44. package/dist/tools/trades.js +17 -3
  45. package/dist/tools/volume.d.ts.map +1 -1
  46. package/dist/tools/volume.js +21 -3
  47. package/dist/types.d.ts +9 -0
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/utils.d.ts +23 -0
  50. package/dist/utils.d.ts.map +1 -0
  51. package/dist/utils.js +68 -0
  52. package/marketplace/README.md +1 -1
  53. package/marketplace/claude-listing.md +60 -14
  54. package/marketplace/gemini-tools.json +183 -9
  55. package/marketplace/openapi.yaml +335 -119
  56. package/package.json +1 -1
  57. package/server.json +2 -2
  58. package/src/http.ts +44 -0
  59. package/src/index.ts +34 -0
  60. package/src/tools/arbitrage.ts +202 -0
  61. package/src/tools/balances.ts +27 -4
  62. package/src/tools/calculate_position_size.ts +141 -0
  63. package/src/tools/compare_markets.ts +11 -10
  64. package/src/tools/dead_mans_switch.ts +314 -0
  65. package/src/tools/market_sentiment.ts +141 -0
  66. package/src/tools/market_summary.ts +124 -0
  67. package/src/tools/markets.ts +4 -2
  68. package/src/tools/orderbook.ts +15 -4
  69. package/src/tools/orders.ts +45 -4
  70. package/src/tools/price_history.ts +5 -57
  71. package/src/tools/simulate_order.ts +182 -0
  72. package/src/tools/spread.ts +10 -8
  73. package/src/tools/technical_indicators.ts +282 -0
  74. package/src/tools/ticker.ts +27 -3
  75. package/src/tools/trades.ts +18 -3
  76. package/src/tools/volume.ts +24 -3
  77. package/src/types.ts +12 -0
  78. package/src/utils.ts +73 -0
  79. package/test/unit.ts +758 -0
@@ -7,11 +7,14 @@ info:
7
7
  Provides live prices, spreads, OHLCV history, order books, trade history, and volume for all markets.
8
8
  No authentication required for public tools.
9
9
 
10
+ All response schemas are flat and typed: monetary amounts are returned as floats with
11
+ separate _currency fields instead of [amount, currency] arrays.
12
+
10
13
  **Note:** This spec describes a deployed HTTP wrapper around the buda-mcp
11
14
  stdio server. Deploy locally with mcp-proxy:
12
15
  mcp-proxy --port 8000 -- npx -y @guiie/buda-mcp
13
16
  Or point `servers[0].url` at your hosted instance.
14
- version: 1.2.0
17
+ version: 1.3.0
15
18
  contact:
16
19
  url: https://github.com/gtorreal/buda-mcp
17
20
 
@@ -25,8 +28,10 @@ paths:
25
28
  operationId: getMarkets
26
29
  summary: List all trading pairs
27
30
  description: |
28
- Returns all available markets on Buda.com, or details for a single market.
29
- Each market entry includes base/quote currencies, trading fees, and minimum order amounts.
31
+ Lists all available markets on Buda.com, or details for a single market.
32
+ Each market entry includes base/quote currencies, taker/maker fees as decimals,
33
+ minimum order amount, and fee discount tiers.
34
+ Example: 'What is the taker fee and minimum order size for BTC-CLP?'
30
35
  parameters:
31
36
  - name: market_id
32
37
  in: query
@@ -56,6 +61,8 @@ paths:
56
61
  description: |
57
62
  Returns the current market snapshot: last traded price, best bid (max_bid),
58
63
  best ask (min_ask), 24h volume, and price change over 24h and 7d.
64
+ All prices are floats in the quote currency. price_variation_24h is a decimal fraction.
65
+ Example: 'What is the current Bitcoin price in Chilean pesos?'
59
66
  parameters:
60
67
  - name: market_id
61
68
  in: query
@@ -79,8 +86,10 @@ paths:
79
86
  operationId: getOrderbook
80
87
  summary: Order book for a market
81
88
  description: |
82
- Returns the current limit order book: sorted arrays of bids (buy orders)
83
- and asks (sell orders). Each entry is [price, amount].
89
+ Returns the current limit order book as typed objects with float price and amount fields.
90
+ Bids are sorted highest-price first; asks lowest-price first.
91
+ Prices are in the quote currency; amounts are in the base currency.
92
+ Example: 'What are the top 5 buy and sell orders for BTC-CLP right now?'
84
93
  parameters:
85
94
  - name: market_id
86
95
  in: query
@@ -112,8 +121,10 @@ paths:
112
121
  operationId: getTrades
113
122
  summary: Recent trade history for a market
114
123
  description: |
115
- Returns recent trades. Each entry is [timestamp_ms, amount, price, direction]
116
- where direction is "buy" or "sell".
124
+ Returns recent trades as typed objects with float fields.
125
+ Each entry has timestamp_ms (integer), amount (float, base currency),
126
+ price (float, quote currency), and direction ("buy" or "sell").
127
+ Example: 'What was the last executed price for BTC-CLP and was it a buy or sell?'
117
128
  parameters:
118
129
  - name: market_id
119
130
  in: query
@@ -155,8 +166,9 @@ paths:
155
166
  operationId: getMarketVolume
156
167
  summary: 24h and 7-day volume for a market
157
168
  description: |
158
- Returns transacted volume broken down by side (ask = sell, bid = buy)
159
- and time window (24h and 7d). Amounts are in the market's base currency.
169
+ Returns transacted volume as floats broken down by side (ask = sell, bid = buy)
170
+ and time window (24h and 7d). All volumes are in the market's base currency.
171
+ Example: 'How much Bitcoin was sold on BTC-CLP in the last 24 hours?'
160
172
  parameters:
161
173
  - name: market_id
162
174
  in: query
@@ -180,8 +192,9 @@ paths:
180
192
  operationId: getSpread
181
193
  summary: Bid/ask spread for a market
182
194
  description: |
183
- Returns the best bid price, best ask price, absolute spread, and spread as a percentage
184
- of the ask price. Useful for assessing market liquidity.
195
+ Returns the best bid price, best ask price, absolute spread, and spread percentage
196
+ as floats. spread_percentage is in percent (e.g. 0.15 means 0.15%).
197
+ Example: 'Is BTC-CLP liquid enough to buy 10M CLP without significant slippage?'
185
198
  parameters:
186
199
  - name: market_id
187
200
  in: query
@@ -206,8 +219,9 @@ paths:
206
219
  summary: Compare all pairs of a base currency side by side
207
220
  description: |
208
221
  Returns ticker data for all trading pairs of a given base currency across all supported
209
- quote currencies (CLP, COP, PEN, USDC, BTC, ETH). For example, base_currency=BTC returns
210
- data for BTC-CLP, BTC-COP, BTC-PEN, and BTC-USDC.
222
+ quote currencies (CLP, COP, PEN, USDC, BTC, ETH). All prices and change values are floats.
223
+ price_change_24h is in percent (e.g. 1.23 means +1.23%).
224
+ Example: 'In which country is Bitcoin currently most expensive on Buda?'
211
225
  parameters:
212
226
  - name: base_currency
213
227
  in: query
@@ -233,8 +247,10 @@ paths:
233
247
  description: |
234
248
  IMPORTANT: Candles are aggregated client-side from raw trades (Buda has no native
235
249
  candlestick endpoint) — increase 'limit' for deeper history but expect slower responses.
236
- Returns OHLCV (open/high/low/close/volume) candles. Candle timestamps are UTC bucket
237
- boundaries. Supports 1h, 4h, and 1d candle periods.
250
+ Returns OHLCV candles with float values (open/high/low/close in quote currency,
251
+ volume in base currency). Candle timestamps are UTC bucket boundaries.
252
+ Supports 1h, 4h, and 1d candle periods.
253
+ Example: 'Show me the hourly BTC-CLP price chart for the past 24 hours.'
238
254
  parameters:
239
255
  - name: market_id
240
256
  in: query
@@ -269,17 +285,73 @@ paths:
269
285
  "404":
270
286
  $ref: "#/components/responses/NotFound"
271
287
 
288
+ /get_market_summary:
289
+ get:
290
+ operationId: getMarketSummary
291
+ summary: Complete market overview in a single call
292
+ description: |
293
+ One-call summary of everything relevant about a market: last price, best bid/ask,
294
+ spread %, 24h volume, 24h and 7d price change, and a liquidity_rating.
295
+ liquidity_rating: "high" (spread < 0.3%), "medium" (0.3–1%), "low" (> 1%).
296
+ All prices and volumes are floats. Best first tool to call when a user asks about a specific market.
297
+ Example: 'Give me a complete overview of the BTC-CLP market right now.'
298
+ parameters:
299
+ - name: market_id
300
+ in: query
301
+ required: true
302
+ description: Market identifier (e.g. "BTC-CLP", "ETH-COP"). Case-insensitive.
303
+ schema:
304
+ type: string
305
+ example: BTC-CLP
306
+ responses:
307
+ "200":
308
+ description: Full market summary
309
+ content:
310
+ application/json:
311
+ schema:
312
+ $ref: "#/components/schemas/MarketSummaryResponse"
313
+ "404":
314
+ $ref: "#/components/responses/NotFound"
315
+
316
+ /get_arbitrage_opportunities:
317
+ get:
318
+ operationId: getArbitrageOpportunities
319
+ summary: Cross-country price discrepancies normalized to USDC
320
+ description: |
321
+ Detects price discrepancies for a given asset across Buda's CLP, COP, and PEN markets,
322
+ normalized to USDC using current exchange rates. Returns pairwise discrepancies above
323
+ threshold_pct, sorted descending by opportunity size.
324
+ IMPORTANT: Buda taker fee is 0.8% per leg (~1.6% round-trip). Deduct fees before acting.
325
+ Example: 'Is there an arbitrage opportunity for BTC between Chile and Peru right now?'
326
+ parameters:
327
+ - name: base_currency
328
+ in: query
329
+ required: true
330
+ description: Base asset to scan (e.g. "BTC", "ETH"). Case-insensitive.
331
+ schema:
332
+ type: string
333
+ example: BTC
334
+ - name: threshold_pct
335
+ in: query
336
+ required: false
337
+ description: Minimum discrepancy percentage to include (default 0.5). Round-trip fees ~1.6%.
338
+ schema:
339
+ type: number
340
+ minimum: 0
341
+ default: 0.5
342
+ example: 1.0
343
+ responses:
344
+ "200":
345
+ description: Arbitrage opportunities found
346
+ content:
347
+ application/json:
348
+ schema:
349
+ $ref: "#/components/schemas/ArbitrageResponse"
350
+ "404":
351
+ $ref: "#/components/responses/NotFound"
352
+
272
353
  components:
273
354
  schemas:
274
- Amount:
275
- type: array
276
- description: Monetary amount as [value_string, currency_code]
277
- items:
278
- type: string
279
- minItems: 2
280
- maxItems: 2
281
- example: ["65929908.0", "CLP"]
282
-
283
355
  Market:
284
356
  type: object
285
357
  properties:
@@ -296,7 +368,10 @@ components:
296
368
  type: string
297
369
  example: CLP
298
370
  minimum_order_amount:
299
- $ref: "#/components/schemas/Amount"
371
+ type: array
372
+ items:
373
+ type: string
374
+ example: ["0.00001", "BTC"]
300
375
  taker_fee:
301
376
  type: string
302
377
  example: "0.8"
@@ -325,55 +400,67 @@ components:
325
400
  market:
326
401
  $ref: "#/components/schemas/Market"
327
402
 
328
- Ticker:
403
+ TickerResponse:
329
404
  type: object
330
405
  properties:
331
406
  market_id:
332
407
  type: string
333
408
  example: BTC-CLP
334
409
  last_price:
335
- $ref: "#/components/schemas/Amount"
336
- max_bid:
337
- $ref: "#/components/schemas/Amount"
410
+ type: number
411
+ example: 65675000
412
+ last_price_currency:
413
+ type: string
414
+ example: CLP
338
415
  min_ask:
339
- $ref: "#/components/schemas/Amount"
416
+ type: number
417
+ example: 65678531
418
+ min_ask_currency:
419
+ type: string
420
+ example: CLP
421
+ max_bid:
422
+ type: number
423
+ example: 65675000
424
+ max_bid_currency:
425
+ type: string
426
+ example: CLP
340
427
  volume:
341
- $ref: "#/components/schemas/Amount"
342
- price_variation_24h:
428
+ type: number
429
+ example: 5.00837363
430
+ volume_currency:
343
431
  type: string
344
- description: Decimal fraction (e.g. "0.014" = +1.4%)
345
- example: "0.014"
432
+ example: BTC
433
+ price_variation_24h:
434
+ type: number
435
+ description: Decimal fraction (e.g. 0.019 = +1.9%)
436
+ example: 0.019
346
437
  price_variation_7d:
347
- type: string
348
- example: "-0.032"
438
+ type: number
439
+ example: -0.032
349
440
 
350
- TickerResponse:
441
+ OrderBookEntry:
351
442
  type: object
352
443
  properties:
353
- ticker:
354
- $ref: "#/components/schemas/Ticker"
444
+ price:
445
+ type: number
446
+ example: 65675000
447
+ amount:
448
+ type: number
449
+ example: 0.01520608
355
450
 
356
451
  OrderBookResponse:
357
452
  type: object
358
453
  properties:
359
454
  bids:
360
455
  type: array
361
- description: Buy orders sorted best-first, each [price, amount]
456
+ description: Buy orders sorted highest-price first
362
457
  items:
363
- type: array
364
- items:
365
- type: string
366
- minItems: 2
367
- maxItems: 2
458
+ $ref: "#/components/schemas/OrderBookEntry"
368
459
  asks:
369
460
  type: array
370
- description: Sell orders sorted best-first, each [price, amount]
461
+ description: Sell orders sorted lowest-price first
371
462
  items:
372
- type: array
373
- items:
374
- type: string
375
- minItems: 2
376
- maxItems: 2
463
+ $ref: "#/components/schemas/OrderBookEntry"
377
464
  bid_count:
378
465
  type: integer
379
466
  description: Total number of bid levels in the full book
@@ -382,51 +469,69 @@ components:
382
469
  description: Total number of ask levels in the full book
383
470
 
384
471
  TradeEntry:
385
- type: array
386
- description: "[timestamp_ms, amount, price, direction]"
387
- items:
388
- type: string
389
- minItems: 4
390
- maxItems: 4
391
- example: ["1775857164247", "0.00113757", "65929908.0", "buy"]
472
+ type: object
473
+ properties:
474
+ timestamp_ms:
475
+ type: integer
476
+ example: 1775857164247
477
+ amount:
478
+ type: number
479
+ example: 0.00113757
480
+ price:
481
+ type: number
482
+ example: 65675000
483
+ direction:
484
+ type: string
485
+ enum: [buy, sell]
486
+ example: buy
392
487
 
393
488
  TradesResponse:
394
489
  type: object
395
490
  properties:
396
- trades:
397
- type: object
398
- properties:
399
- market_id:
400
- type: string
401
- example: BTC-CLP
402
- timestamp:
403
- type: string
404
- description: Most recent trade timestamp (ms)
405
- last_timestamp:
406
- type: string
407
- description: Oldest trade timestamp in this response (ms)
408
- entries:
409
- type: array
410
- items:
411
- $ref: "#/components/schemas/TradeEntry"
491
+ timestamp:
492
+ type: string
493
+ description: Most recent trade timestamp (ms)
494
+ last_timestamp:
495
+ type: string
496
+ description: Oldest trade timestamp in this response (ms)
497
+ market_id:
498
+ type: string
499
+ example: BTC-CLP
500
+ entries:
501
+ type: array
502
+ items:
503
+ $ref: "#/components/schemas/TradeEntry"
412
504
 
413
505
  VolumeResponse:
414
506
  type: object
415
507
  properties:
416
- volume:
417
- type: object
418
- properties:
419
- market_id:
420
- type: string
421
- example: BTC-CLP
422
- ask_volume_24h:
423
- $ref: "#/components/schemas/Amount"
424
- ask_volume_7d:
425
- $ref: "#/components/schemas/Amount"
426
- bid_volume_24h:
427
- $ref: "#/components/schemas/Amount"
428
- bid_volume_7d:
429
- $ref: "#/components/schemas/Amount"
508
+ market_id:
509
+ type: string
510
+ example: BTC-CLP
511
+ ask_volume_24h:
512
+ type: number
513
+ example: 0.63744329
514
+ ask_volume_24h_currency:
515
+ type: string
516
+ example: BTC
517
+ ask_volume_7d:
518
+ type: number
519
+ example: 7.41219004
520
+ ask_volume_7d_currency:
521
+ type: string
522
+ example: BTC
523
+ bid_volume_24h:
524
+ type: number
525
+ example: 4.37093034
526
+ bid_volume_24h_currency:
527
+ type: string
528
+ example: BTC
529
+ bid_volume_7d:
530
+ type: number
531
+ example: 11.93962368
532
+ bid_volume_7d_currency:
533
+ type: string
534
+ example: BTC
430
535
 
431
536
  SpreadResponse:
432
537
  type: object
@@ -434,24 +539,25 @@ components:
434
539
  market_id:
435
540
  type: string
436
541
  example: BTC-CLP
437
- currency:
542
+ price_currency:
438
543
  type: string
439
544
  example: CLP
440
545
  best_bid:
441
- type: string
442
- example: "65221128.0"
546
+ type: number
547
+ example: 65675000
443
548
  best_ask:
444
- type: string
445
- example: "65727568.0"
549
+ type: number
550
+ example: 65678531
446
551
  spread_absolute:
447
- type: string
448
- example: "506440.00"
552
+ type: number
553
+ example: 3531
449
554
  spread_percentage:
450
- type: string
451
- example: "0.7705%"
555
+ type: number
556
+ description: Spread as percent of ask price (e.g. 0.0054 means 0.0054%)
557
+ example: 0.0054
452
558
  last_price:
453
- type: string
454
- example: "65221078.43"
559
+ type: number
560
+ example: 65675000
455
561
 
456
562
  CompareMarketsResponse:
457
563
  type: object
@@ -468,23 +574,24 @@ components:
468
574
  type: string
469
575
  example: BTC-CLP
470
576
  last_price:
471
- type: string
472
- example: "65221078.43"
473
- currency:
577
+ type: number
578
+ example: 65675000
579
+ last_price_currency:
474
580
  type: string
475
581
  example: CLP
476
582
  best_bid:
477
- type: string
583
+ type: number
478
584
  best_ask:
479
- type: string
585
+ type: number
480
586
  volume_24h:
481
- type: string
587
+ type: number
482
588
  price_change_24h:
483
- type: string
484
- example: "0.30%"
589
+ type: number
590
+ description: In percent (e.g. 1.23 means +1.23%)
591
+ example: 1.23
485
592
  price_change_7d:
486
- type: string
487
- example: "-1.20%"
593
+ type: number
594
+ example: -1.20
488
595
 
489
596
  OhlcvCandle:
490
597
  type: object
@@ -494,20 +601,20 @@ components:
494
601
  format: date-time
495
602
  example: "2026-04-10T12:00:00.000Z"
496
603
  open:
497
- type: string
498
- example: "65221078.43"
604
+ type: number
605
+ example: 65221078.43
499
606
  high:
500
- type: string
501
- example: "65975364.0"
607
+ type: number
608
+ example: 65975364
502
609
  low:
503
- type: string
504
- example: "65164404.87"
610
+ type: number
611
+ example: 65164404.87
505
612
  close:
506
- type: string
507
- example: "65386647.0"
613
+ type: number
614
+ example: 65386647
508
615
  volume:
509
- type: string
510
- example: "0.52341200"
616
+ type: number
617
+ example: 0.52341200
511
618
  trade_count:
512
619
  type: integer
513
620
  example: 12
@@ -524,6 +631,9 @@ components:
524
631
  candle_count:
525
632
  type: integer
526
633
  example: 6
634
+ trades_fetched:
635
+ type: integer
636
+ example: 100
527
637
  note:
528
638
  type: string
529
639
  candles:
@@ -531,6 +641,112 @@ components:
531
641
  items:
532
642
  $ref: "#/components/schemas/OhlcvCandle"
533
643
 
644
+ MarketSummaryResponse:
645
+ type: object
646
+ properties:
647
+ market_id:
648
+ type: string
649
+ example: BTC-CLP
650
+ last_price:
651
+ type: number
652
+ example: 65675000
653
+ last_price_currency:
654
+ type: string
655
+ example: CLP
656
+ bid:
657
+ type: number
658
+ example: 65675000
659
+ ask:
660
+ type: number
661
+ example: 65678531
662
+ spread_pct:
663
+ type: number
664
+ description: Bid/ask spread as percentage of ask
665
+ example: 0.0054
666
+ volume_24h:
667
+ type: number
668
+ example: 5.00837363
669
+ volume_24h_currency:
670
+ type: string
671
+ example: BTC
672
+ price_change_24h:
673
+ type: number
674
+ description: In percent (e.g. 1.9 means +1.9%)
675
+ example: 1.9
676
+ price_change_7d:
677
+ type: number
678
+ example: -3.2
679
+ liquidity_rating:
680
+ type: string
681
+ enum: [high, medium, low]
682
+ description: "high: spread < 0.3%, medium: 0.3–1%, low: > 1%"
683
+ example: high
684
+
685
+ ArbitrageMarketPrice:
686
+ type: object
687
+ properties:
688
+ market_id:
689
+ type: string
690
+ example: BTC-CLP
691
+ price_usdc:
692
+ type: number
693
+ example: 65675
694
+ local_price:
695
+ type: number
696
+ example: 65675000
697
+ usdc_rate:
698
+ type: number
699
+ example: 1000
700
+
701
+ ArbitrageOpportunity:
702
+ type: object
703
+ properties:
704
+ market_a:
705
+ type: string
706
+ example: BTC-CLP
707
+ market_b:
708
+ type: string
709
+ example: BTC-PEN
710
+ price_a_usdc:
711
+ type: number
712
+ example: 65675
713
+ price_b_usdc:
714
+ type: number
715
+ example: 67568
716
+ discrepancy_pct:
717
+ type: number
718
+ example: 2.88
719
+ higher_market:
720
+ type: string
721
+ example: BTC-PEN
722
+ lower_market:
723
+ type: string
724
+ example: BTC-CLP
725
+
726
+ ArbitrageResponse:
727
+ type: object
728
+ properties:
729
+ base_currency:
730
+ type: string
731
+ example: BTC
732
+ threshold_pct:
733
+ type: number
734
+ example: 0.5
735
+ markets_analyzed:
736
+ type: array
737
+ items:
738
+ $ref: "#/components/schemas/ArbitrageMarketPrice"
739
+ opportunities_found:
740
+ type: integer
741
+ example: 1
742
+ opportunities:
743
+ type: array
744
+ items:
745
+ $ref: "#/components/schemas/ArbitrageOpportunity"
746
+ fees_note:
747
+ type: string
748
+ example: "Buda taker fee is 0.8% per leg. A round-trip arbitrage costs approximately 1.6% in fees."
749
+
534
750
  Error:
535
751
  type: object
536
752
  properties:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guiie/buda-mcp",
3
- "version": "1.2.2",
3
+ "version": "1.4.0",
4
4
  "mcpName": "io.github.gtorreal/buda-mcp",
5
5
  "description": "MCP server for Buda.com's public cryptocurrency exchange API (Chile, Colombia, Peru)",
6
6
  "type": "module",
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/gtorreal/buda-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.2.2",
9
+ "version": "1.4.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@guiie/buda-mcp",
14
- "version": "1.2.2",
14
+ "version": "1.4.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  }