{"x402Version":2,"service":"HALOWERK marktwerk","version":"1.0.0","network":"eip155:8453","network_name":"Base Mainnet","chain_id":8453,"recipient":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","asset":{"symbol":"USDC","address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","decimals":6},"facilitators":["CDP","https://facilitator.xpay.sh"],"payment_headers":{"primary":"PAYMENT-SIGNATURE","accepted":["PAYMENT-SIGNATURE","X-Payment","PAYMENT"],"challenge":["PAYMENT-REQUIRED"],"response":["PAYMENT-RESPONSE"]},"resources":[{"url":"https://markt.halowerk.com/snapshot","method":"POST","name":"market_snapshot","description":"Returns one consolidated ticker for a BASE/QUOTE pair from Binance, Coinbase, Kraken, OKX or Bybit. With venue \"auto\" the exchange with the highest 24h turnover for that pair is used and named in the answer, never silently. Every field the exchange does not report stays null and is listed in unavailable_fields — nothing is estimated or filled in from another venue, except the 24h turnover used for the auto comparison, which is marked as estimated where an exchange reports base volume only. age_ms states how old the value is; a cache hit costs the same and says so. Does not deliver order book depth, trades or derivatives data.","summary":"Live spot snapshot for one crypto pair: last, bid, ask, mid, spread in basis points, 24h volume, high, low and change, with the age of the value in milliseconds.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDC."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit","auto"],"default":"auto","description":"Exchange to read from, or \"auto\" for the venue with the highest 24h turnover."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/candles","method":"POST","name":"ohlcv_candles","description":"Returns open, high, low, close, volume and, where the exchange reports it, the trade count per candle. Timestamps are always the opening time of the candle in UTC milliseconds. The last candle is usually still forming: it is delivered but marked, and complete=false says so at the top level, with last_closed_ts naming the newest closed candle. Gaps are reported in gaps[] and never interpolated. A limit above the exchange page size is fetched in several requests and joined without a visible seam. Coinbase does not publish a 4h interval and therefore rejects it instead of deriving one from 6h data.","summary":"OHLCV candles for one crypto pair and interval, with an explicit flag whether the last candle is closed and an explicit list of gaps.","inputSchema":{"type":"object","required":["symbol","interval"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDC."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"],"default":"binance","description":"Exchange to read from."},"interval":{"type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Candle size."},"limit":{"type":"integer","minimum":1,"maximum":1000,"default":100,"description":"Number of candles, newest last."},"since":{"type":"string","format":"date-time","description":"Optional ISO start time. Without it the newest candles are returned."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/orderbook","method":"POST","name":"order_book","description":"Returns the visible order book of Binance, Coinbase, Kraken, OKX or Bybit for one BASE/QUOTE pair. Levels come as [price, size] with bids descending and asks ascending. depth[] states how much turnover sits within 0.5, 1 and 2 percent of the mid per side, in the quote currency, and additionally as depth_usd where the quote is a US dollar unit. group_bps folds levels into price bands whose price is the size weighted average of the band, for agents that do not want a thousand rows. The exchange update id is passed through in sequence so a buyer can tell whether two calls belong together; Kraken publishes none and the field stays null. truncated says the book ended exactly at the requested level count, so further levels may sit behind it; a shorter answer means the book really is that thin, nothing is padded. Cache lifetime is one second and age_ms always tells the truth.","summary":"Live order book for one crypto pair: aggregated bid and ask levels, mid, spread in basis points, depth in the quote currency at 0.5, 1 and 2 percent, plus the exchange update id.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDC."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"],"default":"binance","description":"Exchange to read the book from."},"levels":{"type":"integer","minimum":10,"maximum":1000,"default":100,"description":"Number of levels per side. Exchanges cap this differently; venue_max_levels names the cap actually used."},"group_bps":{"type":"number","minimum":0.1,"maximum":500,"description":"Optional band width in basis points. Without it the book is returned ungrouped."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/trades","method":"POST","name":"time_and_sales","description":"Returns the raw public trade tape of Binance, Coinbase, Kraken, OKX or Bybit for one BASE/QUOTE pair, oldest first, exactly as the exchange reports it — no smoothing, no merging of prints. side is the side of the aggressor: reported directly by Kraken, OKX and Bybit, derived from the maker flag at Binance, and inverted from the maker side at Coinbase; side_source names which case applies. Where an exchange does not publish it, side is \"unbekannt\" and side_inferred stays false rather than guessing. buy_volume, sell_volume, counts and vwap are computed over exactly the delivered trades and the window is stated in ts_range. Public trade endpoints only reach back a limited number of prints; since filters within that window and says so when the window starts later than requested.","summary":"Recent public trades for one crypto pair with buy and sell volume split by aggressor side, trade counts, VWAP over the delivered window and the largest single trade.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDC."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"],"default":"binance","description":"Exchange to read the tape from."},"limit":{"type":"integer","minimum":1,"maximum":1000,"default":100,"description":"Number of trades, newest last. Bybit spot publishes at most 60."},"since":{"type":"string","format":"date-time","description":"Optional ISO start time. Only filters inside the window the exchange publishes."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/orderbook/imbalance","method":"POST","name":"orderbook_imbalance","description":"Reads the visible order book of one exchange and measures how bid and ask volume sit inside a window of depth_pct around the mid. imbalance runs from -1 (only asks) to +1 (only bids) and is computed on quote turnover, not on level counts. pressure is the plain classification kauf, verkauf or ausgeglichen and the threshold behind it is returned in thresholds_used, never hidden in code. A wall is a level larger than five times the median level size in the same window; that median is part of the answer so the finding can be recomputed. concentration states what share of the volume sits in the three largest levels per side. The mandatory hinweis field states that order books turn over in seconds and that wall volume can be pulled without ever trading: this is a snapshot, not a signal and not a recommendation.","summary":"Bid versus ask volume inside a price window around the mid, as an imbalance between -1 and +1, with walls, concentration, microprice and every threshold used stated in the answer.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDC."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"],"default":"binance","description":"Exchange to read the book from."},"depth_pct":{"type":"number","minimum":0.1,"maximum":5,"default":1,"description":"Half width of the window around the mid, in percent."},"levels":{"type":"integer","minimum":50,"maximum":1000,"default":200,"description":"Levels per side to request. Exchanges cap this differently."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/slippage","method":"POST","name":"slippage_estimate","description":"Takes side, size and size_unit and simulates the fill against the visible book of Binance, Coinbase, Kraken, OKX or Bybit. avg_price is the size weighted fill price, worst_price the last level touched, slippage is stated against the mid and against the best price on the executing side, with the reference named. If the visible depth is not enough the answer is still valid and paid: insufficient_liquidity is true, filled_pct says how far it got and max_fillable_size names the size the book actually carries. liquidity_curve is the core value: how much can be moved at 10, 25, 50 and 100 basis points of price give. With include_fees the taker fee of the entry tier is added, read live from Kraken and from a dated table elsewhere, always with source and tier named. No assumption about hidden liquidity, no iceberg estimate, no market impact beyond the book.","summary":"Walks a given order size through the visible order book and returns average price, worst price, slippage in basis points, how many levels it consumes and a liquidity curve of the size executable within 10, 25, 50 and 100 basis points.","inputSchema":{"type":"object","required":["symbol","side","size"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDC."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"],"default":"binance","description":"Exchange whose book is used."},"side":{"type":"string","enum":["buy","sell"],"description":"buy consumes the ask side, sell the bid side."},"size":{"type":"number","exclusiveMinimum":0,"description":"Order size, in the unit given by size_unit."},"size_unit":{"type":"string","enum":["base","quote"],"default":"base","description":"base means size is in BASE, quote means size is in QUOTE."},"include_fees":{"type":"boolean","default":false,"description":"Adds the taker fee of the entry tier on top of the fill price."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/cross-exchange","method":"POST","name":"cross_exchange_quote","description":"Queries Binance, Coinbase, Kraken, OKX and Bybit in parallel for one BASE/QUOTE pair, four seconds per exchange. An exchange that does not answer drops out with a stated reason and the call stays valid; venues_failed lists them. oldest_age_ms is mandatory and states the age of the oldest quote that entered the comparison, because differences taken from unequal points in time are the most common error in this kind of table. With an optional size the visible book of each exchange is walked as well, so the comparison uses the price actually executable for that size rather than the top of book. This endpoint compares prices and does not judge them: fees, slippage and transfer costs are not included, that calculation is endpoint 50.","summary":"The same pair quoted side by side on up to five exchanges, with best bid, best ask, the raw difference between them and the age of the oldest quote in the comparison.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDC."},"venues":{"type":"array","minItems":1,"maxItems":5,"uniqueItems":true,"items":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"]},"description":"Exchanges to compare. Without it all connected exchanges are used."},"size":{"type":"number","exclusiveMinimum":0,"description":"Optional order size in BASE. With it the executable average price per exchange is computed from the visible book."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/arbitrage","method":"POST","name":"net_arbitrage_check","description":"Walks the visible book of every requested exchange for the given size, in both directions, and works out what remains of the raw spread: gross_spread_bps from top of book, then the taker fee of the entry tier on both sides, then the slippage the size causes on the buy book and on the sell book. net_spread_bps is the headline number, the gross value stands next to it because on its own it is misleading. Transfer costs are the part no public exchange interface publishes without a key: withdraw fee, network, typical transfer minutes and gas stay null with the reason named, they are never estimated. With include_transfer true, viable therefore stays null instead of claiming a profit that has not been fully costed; with include_transfer false, viable is computed on fees and slippage alone and says so. Every direction that was examined is returned with its own numbers. No execution, no recommendation, only the calculation.","summary":"Checks a cross exchange price difference after taker fees and after the slippage the given size actually causes on both books, and states plainly what is left and what could not be priced.","inputSchema":{"type":"object","required":["symbol","size"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Trading pair as BASE/QUOTE, for example ETH/USDT."},"venues":{"type":"array","minItems":2,"maxItems":5,"uniqueItems":true,"items":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"]},"description":"Exchanges to compare. Without it all connected ones are used."},"size":{"type":"number","exclusiveMinimum":0,"description":"Size in BASE that would be bought on one venue and sold on the other."},"include_transfer":{"type":"boolean","default":true,"description":"Whether transfer costs must be part of the verdict. They cannot be sourced publicly, so true keeps viable at null."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"6000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/anomaly/volume","method":"POST","name":"volume_anomaly","description":"Compares the volume of the most recent completed minute candle with the distribution of minute volumes over the chosen lookback, taken from the history this hub records itself every minute. Median and median absolute deviation are used instead of mean and standard deviation because volume is skewed. Every finding carries its z value, the baseline median, the baseline MAD and the number of samples behind it, so it can be recomputed rather than believed. Pairs without a finding are returned in quiet with their z as well: no finding is a result and is charged in full. Fewer than two hundred samples set confidence to niedrig and say so explicitly. Where the own history does not yet cover the requested window at all, the call answers with charged=false and names the date from which it will.","summary":"Checks up to twenty pairs for unusual trading volume against this hub own minute by minute history, using median and median absolute deviation, and returns the baseline behind every finding.","inputSchema":{"type":"object","required":["symbols"],"additionalProperties":false,"properties":{"symbols":{"type":"array","minItems":1,"maxItems":20,"uniqueItems":true,"items":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$"},"description":"Pairs as BASE/QUOTE. Only pairs the collector of this hub watches can be answered; watched_pairs in the answer lists them."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"],"default":"binance","description":"Exchange whose recorded history is used."},"lookback":{"type":"string","enum":["1h","4h","24h","7d"],"default":"24h","description":"Length of the baseline window."},"sensitivity":{"type":"string","enum":["streng","normal","weit"],"default":"normal","description":"Threshold on the robust z value: streng 5, normal 3.5, weit 2.5."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/regime","method":"POST","name":"volatility_regime","description":"Measures the state of one pair over the chosen horizon from the minute candles this hub records itself: annualized realized volatility from log returns, trend strength as path efficiency between -1 and +1, average true range, and the drawdown from the highest high in the window. regime is a classification with its rule fully disclosed, and reasoning lists the values that carried it as data, not as prose. vol_percentile_90d needs ninety days of own history; until that exists the field stays null and history_days states how far the record actually reaches, with confidence set to niedrig below thirty days. There is no forecast and no price target here: the endpoint describes the state, not the future.","summary":"Realized volatility, trend strength, ATR and drawdown from the high over a chosen horizon, computed on this hub own minute history, with a stated regime and every threshold and formula in the answer.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Pair as BASE/QUOTE. Only pairs the collector watches can be answered."},"venue":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"],"default":"binance","description":"Exchange whose recorded history is used."},"horizon":{"type":"string","enum":["1h","4h","1d","1w"],"default":"1d","description":"Measurement window."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/breadth","method":"POST","name":"market_breadth","description":"Builds the universe from the Binance spot USDT pairs ranked by 24 hour turnover and states that criterion in universe_source, because a breadth number without its universe is meaningless. Stablecoins, wrapped or staked images of the same asset and leveraged tokens are excluded and the exclusion list is part of the answer. Changes over the window come from the exchange candles of every member, not from a single index. pct_above_ma50 and pct_above_ma200 are computed from two hundred daily candles per member; where a listing is younger than the average needs, that member is counted as not assessable rather than as below. dispersion is the standard deviation of member changes, median_change_pct the robust middle. This endpoint says how broad a move is, never in which direction the market will go.","summary":"Market breadth over a named universe of crypto pairs: advancers against decliners, the share trading above their 50 and 200 day averages, volume breadth, median change, dispersion and the leaders and laggards.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"universe":{"oneOf":[{"type":"string","enum":["top50","top100"]},{"type":"array","minItems":2,"maxItems":100,"uniqueItems":true,"items":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$"}}],"default":"top50","description":"top50 or top100 by 24h turnover on Binance spot, or an explicit list of pairs as BASE/QUOTE."},"window":{"type":"string","enum":["1h","24h","7d"],"default":"24h","description":"Measurement window."},"include_moving_averages":{"type":"boolean","default":true,"description":"Whether the 50 and 200 day averages are computed. They cost one request per universe member."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/funding","method":"POST","name":"funding_rate","description":"Reads the public perpetual data of Binance USDⓈ-M Futures, Bybit linear and OKX swaps for one BASE/QUOTE pair. Settlement intervals differ per exchange and per contract, so annualized_pct is only computed after normalising to the interval that exchange actually uses, and the formula is part of the answer. current_rate and predicted_rate are strictly separate: where an exchange publishes no forecast, predicted_rate stays null and the reason is named instead of reusing the current rate. next_settlement_ts comes in UTC milliseconds and as seconds_to_settlement, which is the number an agent waits on. Open interest is passed through as the exchange reports it, with the basis of the conversion named. Exchanges that do not answer drop out with a reason and the call stays valid; oldest_age_ms states the age of the oldest value in the comparison.","summary":"Funding rates of one perpetual across Binance Futures, Bybit and OKX side by side, each with its own settlement interval, the seconds left to the next settlement and the annualized rate after normalising for that interval.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Perpetual as BASE/QUOTE, for example BTC/USDT. Most perpetuals are quoted in USDT."},"venues":{"type":"array","minItems":1,"maxItems":3,"uniqueItems":true,"items":{"type":"string","enum":["binance-futures","bybit","okx"]},"description":"Perpetual venues to query. Without it all connected ones are used."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/basis","method":"POST","name":"futures_basis","description":"Reads the dated futures of Deribit for BTC or ETH and compares each expiry with a spot price whose source is always named in the answer, because a basis computed against a different venue than the future is a different number. By default the Deribit index is used, which sits on the same venue as the contract; choosing a spot venue instead is possible and is then flagged, including the case where that venue quotes in USDT while the contract settles in USD. Annualization only happens above one day of remaining term, otherwise the field stays null with the reason given. Perpetuals have no expiry: for them the premium against spot is reported in basis points instead of an annualized basis. curve classifies the term structure as contango, backwardation or mixed and the rule behind it is part of the answer.","summary":"Futures basis per expiry against a named spot source: absolute and percentage basis, days to expiry, annualized basis where the remaining term allows it, plus the shape of the curve and the perpetual premium.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^(BTC|ETH|btc|eth)/(USD|usd)$","description":"Underlying as BASE/USD, so BTC/USD or ETH/USD. Deribit settles its dated futures in USD."},"venue":{"type":"string","enum":["deribit"],"default":"deribit","description":"Futures venue. Only Deribit is connected here."},"expiries":{"type":"string","default":"alle","description":"alle for every open expiry, naechste for the nearest one, or an exact date as YYYY-MM-DD."},"spot_source":{"type":"string","enum":["deribit_index","binance","coinbase","kraken","okx","bybit"],"default":"deribit_index","description":"Where the spot price comes from. deribit_index sits on the same venue as the contract; anything else is flagged as a cross venue basis."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/open-interest","method":"POST","name":"open_interest_change","description":"Compares the open interest recorded now with the value this hub recorded itself at the start of the window, so both numbers come from the same source and the same basis. Notional value is always taken with the price of its own point in time, never recomputed with the current price. price_change_pct and volume_change_pct cover exactly the same window from the recorded minute candles. interpretation follows a rule printed in the answer, so a buyer can recompute it: price and open interest rising together is a build up, price rising while open interest falls is an unwind, and a move below the noise threshold stays unklar instead of being forced into a label. Without a recorded comparison point the call answers with charged=false and names the date from which the window will be covered.","summary":"Change in open interest over one, four or twenty four hours against this hub own recorded history, together with the price and volume change over the same window and a stated interpretation with its rule.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Perpetual as BASE/QUOTE, for example BTC/USDT."},"venues":{"type":"array","minItems":1,"maxItems":1,"uniqueItems":true,"items":{"type":"string","enum":["binance-futures"]},"description":"Venues whose open interest this hub records. Only Binance USDⓈ-M Futures is recorded so far."},"window":{"type":"string","enum":["1h","4h","24h"],"default":"1h","description":"Comparison window."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/liquidations","method":"POST","name":"liquidation_monitor","description":"Reads the liquidation orders OKX publishes for its perpetual swaps, converts every entry into US dollars with the contract size of that instrument and the bankruptcy price of that event, and sums them by the side of the liquidated position. timeline gives the per minute split of long and short. cascade_detected requires two conditions at once: liquidation volume above five times the median of all five minute buckets in the comparison span, and a price move of at least 0.3 percent in the same bucket. Both conditions, both thresholds and both measured values are in the answer, so the finding can be recomputed. Coverage is stated per venue and is deliberately incomplete: Binance and Bybit publish liquidations only over a live stream, so they are named as not covered instead of being estimated. Liquidation zones derived from leverage assumptions are speculation and are not part of this endpoint.","summary":"Forced liquidations of one perpetual over five minutes, one hour or a day, split into long and short, with the largest single event, a per minute timeline and a cascade check whose two conditions and measured values are stated.","inputSchema":{"type":"object","required":["symbol"],"additionalProperties":false,"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,15}/[A-Za-z0-9]{2,15}$","description":"Perpetual as BASE/QUOTE, for example BTC/USDT."},"venues":{"type":"array","minItems":1,"maxItems":1,"uniqueItems":true,"items":{"type":"string","enum":["okx"]},"description":"Venues with a public liquidation interface. Only OKX publishes one."},"window":{"type":"string","enum":["5m","1h","24h"],"default":"1h","description":"Window to sum over."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/options","method":"POST","name":"options_snapshot","description":"Reads the public option book summaries of Deribit and aggregates them per expiry. iv_atm is the mark implied volatility of the strike closest to the forward, averaged over call and put, and the strike used is named. term_structure lists iv_atm against days to expiry. put_call_ratio is reported twice and never mixed: once by 24h volume and once by open interest. open_interest_by_strike and key_strikes show where positions actually sit, above and below the forward. max_pain comes with the complete calculation and the payout curve so a buyer can recompute it. Greeks are only ever taken from the exchange: skew_25d is derived from the deltas Deribit itself publishes, uses the traded strikes nearest to delta 0.25 without interpolation, names both contracts, and is only computed for a single expiry because it costs one request per contract. unusual_volume needs twenty days of per strike history which this hub does not yet hold, so it stays null with that reason rather than being invented.","summary":"Deribit options snapshot for BTC or ETH: at the money implied volatility per expiry, the term structure, put call ratios split by volume and by open interest, open interest per strike, key strikes and max pain with its full calculation.","inputSchema":{"type":"object","required":["underlying"],"additionalProperties":false,"properties":{"underlying":{"type":"string","enum":["BTC","ETH","btc","eth"],"description":"Underlying. Deribit lists crypto options for BTC and ETH."},"expiry":{"type":"string","default":"naechste","description":"naechste for the nearest expiry, an exact date as YYYY-MM-DD, or alle for every open expiry."},"moneyness_range":{"type":"number","minimum":0.1,"maximum":1,"default":0.3,"description":"How far strikes may sit from the forward to be listed, as a fraction. 0.3 means plus or minus 30 percent."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"8000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/peg","method":"POST","name":"stablecoin_peg","description":"Quotes each stablecoin against real US dollars on Kraken and Coinbase and, separately, against USDT on Binance, OKX and Bybit. Only the dollar quotes enter median_price and deviation_bps, because a USDT quote measures two stablecoins against each other and not the dollar; those are reported apart and labelled. Deviation is always in basis points against 1.00, never in percent. agreement is the point of the whole endpoint: a deviation at a single venue is a venue problem, a deviation everywhere is a peg problem, and divergence_type says which of the two the numbers support. depth_at_peg states how much turnover sits inside the peg band on the book, because a peg that only holds for small size is not a peg. status thresholds are part of the answer. No DEX price is included: this hub has no on-chain access, so dex_price and divergence_cex_dex_bps stay null with the reason named rather than being filled from a third party feed.","summary":"Peg check for stablecoins across exchanges: price per venue, median, deviation from one dollar in basis points, how far the sources agree, the depth sitting at the peg and a stated status with its thresholds.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"stablecoins":{"type":"array","minItems":1,"maxItems":6,"uniqueItems":true,"items":{"type":"string","pattern":"^[A-Za-z0-9]{2,10}$"},"default":["USDC","USDT","DAI"],"description":"Stablecoin tickers, for example USDC, USDT, DAI, PYUSD, USDG, RLUSD."},"venues":{"type":"array","minItems":1,"maxItems":5,"uniqueItems":true,"items":{"type":"string","enum":["binance","coinbase","kraken","okx","bybit"]},"description":"Exchanges to use. Without it all connected ones are used."},"peg_band_bps":{"type":"number","minimum":1,"maximum":500,"default":50,"description":"Half width of the peg band in basis points, used for depth_at_peg."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/gas","method":"POST","name":"evm_gas_conditions","description":"Reads eth_feeHistory over the last ten blocks with reward percentiles 25, 50 and 75, and falls back to eth_gasPrice when a node does not serve fee history. base_fee_gwei is the base fee of the next block, not of the last one, because that is the fee a transaction sent now will actually pay. recommended_gwei is a bid, not an observation: priority at the median plus a base fee doubled to survive several full blocks, and the rule is stated in recommended_rule. cost_usd converts that into dollars for the requested action over typical gas units, named in gas_units_used and explicitly not a measurement of the caller transaction. On Base the L1 data fee is read from the GasPriceOracle predeploy of the chain itself and reported separately in cost_breakdown_usd: a Base figure that omits it understates what leaves the wallet. trend compares the older half of the window against the newer half, and worth_waiting combines that direction with the position of the current base fee inside the window, so the answer is not just what gas costs but whether waiting is likely to help. Thresholds for the cheap, normal and expensive signal differ per chain and travel with every response. No key, no vendor feed: the numbers come from public RPC nodes of the chain plus one dollar quote for ether.","summary":"Gas conditions on Ethereum and Base: base fee, priority fee at three percentiles, a recommended bid, the cost of a concrete action in US dollars including the L1 data fee on Base, the direction over the last blocks and a cheap/normal/expensive verdict with its thresholds named.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"chain":{"type":"string","enum":["ethereum","base"],"default":"ethereum","description":"Chain to measure. ethereum or base."},"action":{"type":"string","enum":["transfer","erc20","swap"],"default":"transfer","description":"Which transaction the cost estimate is for: transfer, erc20 or swap."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/token","method":"POST","name":"token_price_confidence","description":"Takes a chain key and a contract address, or one of a short list of globally unambiguous symbols. A symbol that is not on that list is refused with 400 and a pointer to the address rather than resolved to a guess: the same ticker exists on every chain, and the imitations carry it deliberately. price_usd, decimals and symbol come from the source as they are. confidence is passed through unsmoothed, and this is the point of the endpoint: where the source omits the field, the answer carries null and a warning, never a default that would read as high confidence. data_age_seconds is computed against the timestamp of the quote, not against the moment of the request, so a cached upstream value cannot look fresh. warnings is an array with one entry per triggered rule, and the thresholds behind them travel in thresholds_used. change_24h_percent is fetched separately and stays null with a named reason when the source has no history for the token, instead of being derived from a single observation. A token the source does not cover produces 404 with the chain keys that are known, because a wrong chain key and an unknown token look identical in the raw response.","summary":"Token price in US dollars for a contract address on any covered chain, with the confidence measure of the source passed through unchanged, the age of the value in seconds, the 24 hour change and an explicit warning whenever confidence is low, missing or the value is stale.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"chain":{"type":"string","pattern":"^[a-z0-9_-]{2,24}$","default":"base","description":"Chain key of the source, for example ethereum, base, arbitrum, optimism, polygon, bsc. Required together with address."},"address":{"type":"string","pattern":"^(0x[a-fA-F0-9]{40}|[A-Za-z0-9]{32,44})$","description":"Contract address of the token. EVM address as 0x with 40 hex digits, or the mint address on non EVM chains."},"symbol":{"type":"string","pattern":"^[A-Za-z0-9]{2,10}$","description":"Alternative to address, only for globally unambiguous symbols: BTC, ETH, SOL, BNB, XRP, ADA, AVAX, DOT, MATIC, LINK, UNI, AAVE, DOGE, LTC, ATOM. Anything else is refused with 400."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/bridge","method":"POST","name":"bridge_flows","description":"Measures how much bridged capital sits on a chain and how that changed. bridged_usd is the sum of canonical and external value: what came in over the canonical bridge of the chain plus what third party bridges brought, while natively issued value is reported apart because it never crossed a bridge. net_usd carries its sign meaning in a field of its own, positive always means capital moved INTO the queried chain. inflow_usd and outflow_usd are the summed positive and negative steps of the sampled series and are therefore a lower bound on gross traffic, stated as such rather than sold as transfer counts. change_vs_previous_period puts the number against the equally long window before it, because a large inflow is only large next to the chain usual week. The endpoint refuses the most common way of being wrong about this figure: a stock denominated in dollars grows when prices rise and nobody bridges at all, so price_effect gives the flow under two stated assumptions, one where none of the basket moves with ether and one where all of it does, and the truth sits between them. Source is the free L2BEAT interface, not a bridge aggregator, because the aggregator route named in the original plan went behind a paywall; the consequence is that individual bridge protocols cannot be ranked and top_bridges is null with the reason attached instead of being filled with a plausible guess.","summary":"Capital flow into and out of a chain over 24 hours or 7 days: bridged stock now, gross up and down movement, the net with its sign spelled out, the comparison against the preceding period, the split between canonical and third party bridges, and a separation of real flow from mere price movement.","inputSchema":{"type":"object","additionalProperties":false,"required":["chain"],"properties":{"chain":{"type":"string","pattern":"^[a-z0-9_-]{2,32}$","default":"base","description":"Chain to measure, as L2BEAT id or slug, for example base, arbitrum, op-mainnet, linea, scroll, starknet. Layer 2 and layer 3 chains only."},"period":{"type":"string","enum":["24h","7d"],"default":"24h","description":"Length of the observed window: 24h or 7d."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"url":"https://markt.halowerk.com/hours","method":"POST","name":"exchange_trading_hours","description":"Answers the timing question an agent has before it schedules anything against a regulated exchange: is the main session running, and if not, when does it start. Covers XETR, XFRA, XNYS, XNAS, XLON, XPAR, XAMS, XSWX, XTKS and XHKG with pre trading, main session, post trading, half days and the holidays of 2026 and 2027. Time zones are resolved through IANA names and Intl at the queried instant, never through a fixed offset to UTC, because summer time starts and ends on different dates in the European Union and the United States and a hardcoded offset is wrong for several weeks each year. Tokyo and Hong Kong trade in two blocks with a midday recess, so phase can be break: reporting that recess as closed would tell a caller the day is over when it is not. Every holiday carries a basis field saying whether the date was computed from a rule, transcribed from a published calendar, or is still provisional, because the Hong Kong dates follow the lunar calendar and are gazetted yearly while the Western ones follow Easter and nth weekday rules that can be recomputed. table_maintained_on states when the table was last touched. There is no external source and no price, quote or volume field of any kind: this endpoint is calendar and time logic, and the licensing line that keeps quote data out of it is the reason it can be sold at all.","summary":"Trading hours and holiday calendar for ten regulated exchanges: whether the main session is running right now, which phase the day is in, when it next opens and closes, seconds until that change, half days and the holidays of the coming thirty days, all in the exchange own time zone.","inputSchema":{"type":"object","additionalProperties":false,"required":["mic"],"properties":{"mic":{"type":"string","pattern":"^[A-Za-z]{4}$","default":"XETR","description":"Market Identifier Code of the exchange: XETR, XFRA, XNYS, XNAS, XLON, XPAR, XAMS, XSWX, XTKS or XHKG."},"timestamp":{"type":"string","description":"Instant to evaluate, as an ISO 8601 string. Empty or absent means now."}}},"mimeType":"application/json","accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]}]}