# HALOWERK marktwerk > HALOWERK marktwerk liefert maschinenlesbare Ergebnisse gegen Zahlung nach x402. > Netz Base Mainnet, Zahlungsmittel USDC, Empfänger 0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E. ## So wird bezahlt 1. Route ohne Zahlungskopf aufrufen. Die Antwort ist 402 und trägt accepts, description und inputSchema. 2. Bedingungen mit einem x402-Client signieren. 3. Aufruf wiederholen, Nachweis im Kopf PAYMENT-SIGNATURE. Eine 402-Antwort kostet nichts und löst keine Arbeit aus. Scheitert die Arbeit, trägt die Antwort charged=false und es wird nicht abgerechnet. ## Endpunkte ### POST /snapshot 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. - Preis: 0.001 USDC - MCP-Werkzeug: `market_snapshot` - Eingabe: `["symbol","venue"]` ### POST /candles 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. - Preis: 0.001 USDC - MCP-Werkzeug: `ohlcv_candles` - Eingabe: `["symbol","venue","interval","limit","since"]` ### POST /orderbook 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. - Preis: 0.002 USDC - MCP-Werkzeug: `order_book` - Eingabe: `["symbol","venue","levels","group_bps"]` ### POST /trades 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. - Preis: 0.002 USDC - MCP-Werkzeug: `time_and_sales` - Eingabe: `["symbol","venue","limit","since"]` ### POST /orderbook/imbalance 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. - Preis: 0.003 USDC - MCP-Werkzeug: `orderbook_imbalance` - Eingabe: `["symbol","venue","depth_pct","levels"]` ### POST /slippage 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. - Preis: 0.004 USDC - MCP-Werkzeug: `slippage_estimate` - Eingabe: `["symbol","venue","side","size","size_unit","include_fees"]` ### POST /cross-exchange 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. - Preis: 0.003 USDC - MCP-Werkzeug: `cross_exchange_quote` - Eingabe: `["symbol","venues","size"]` ### POST /arbitrage 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. - Preis: 0.006 USDC - MCP-Werkzeug: `net_arbitrage_check` - Eingabe: `["symbol","venues","size","include_transfer"]` ### POST /anomaly/volume 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. - Preis: 0.003 USDC - MCP-Werkzeug: `volume_anomaly` - Eingabe: `["symbols","venue","lookback","sensitivity"]` ### POST /regime 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. - Preis: 0.003 USDC - MCP-Werkzeug: `volatility_regime` - Eingabe: `["symbol","venue","horizon"]` ### POST /breadth 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. - Preis: 0.004 USDC - MCP-Werkzeug: `market_breadth` - Eingabe: `["universe","window","include_moving_averages"]` ### POST /funding 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. - Preis: 0.002 USDC - MCP-Werkzeug: `funding_rate` - Eingabe: `["symbol","venues"]` ### POST /basis 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. - Preis: 0.004 USDC - MCP-Werkzeug: `futures_basis` - Eingabe: `["symbol","venue","expiries","spot_source"]` ### POST /open-interest 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. - Preis: 0.003 USDC - MCP-Werkzeug: `open_interest_change` - Eingabe: `["symbol","venues","window"]` ### POST /liquidations 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. - Preis: 0.004 USDC - MCP-Werkzeug: `liquidation_monitor` - Eingabe: `["symbol","venues","window"]` ### POST /options 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. - Preis: 0.008 USDC - MCP-Werkzeug: `options_snapshot` - Eingabe: `["underlying","expiry","moneyness_range"]` ### POST /peg 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. - Preis: 0.003 USDC - MCP-Werkzeug: `stablecoin_peg` - Eingabe: `["stablecoins","venues","peg_band_bps"]` ## Weitere Flächen - OpenAPI: https://markt.halowerk.com/openapi.json - Preise: https://markt.halowerk.com/pricing - x402-Manifest: https://markt.halowerk.com/.well-known/x402 - Bazaar: https://markt.halowerk.com/.well-known/x402/bazaar - MCP: https://markt.halowerk.com/mcp