# HALOWERK defiwerk > HALOWERK defiwerk 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 /dex/quote For a given chain, token pair and input amount, every connected DEX is queried through its own contracts: Uniswap V3 through the Quoter via eth_call across all fee tiers, constant-product pools through the pool maths on live reserves, Solidly-style pools through their own getAmountOut. Two-hop routes through the wrapped native token and the chain USDC are included, priced by chaining the hops exactly as a real swap would traverse them. Nothing is executed, submitted or handed to a router — every number is a read. price_impact_bps and slippage are reported as the two different things they are: price impact is how far this trade size moves the pool away from its own mid price, slippage_bps is the tolerance the caller supplied and from which amount_out_min is derived. amount_out_min is arithmetic on the caller tolerance, not a promise about execution. Both rankings are given: best_by_gross for the largest raw output and best_by_net after subtracting gas at the current gas price, with the assumed gas overhead printed so the calculation can be repeated. DEXes that fail or hold no pool for the pair are listed with the reason rather than silently dropped. No recommendation, no execution, no route forwarding. - Preis: 0.005 USDC - MCP-Werkzeug: `dex_quote` - Eingabe: `["chain","token_in","token_out","amount_in","slippage_bps","include_multihop"]` ### POST /pool/liquidity Resolves a pool either by address or by chain, token pair and DEX, then reads token0, token1, fee tier, reserves, in-range liquidity and the current tick straight from the contract. Exit impact is not estimated from a formula but simulated: for Uniswap V3 through the official Quoter contract via eth_call, which walks the same ticks a real swap would and reports how many it crossed; for constant-product and Solidly pools through the pool maths or the pool own getAmountOut. Nothing is ever executed, routed or signed. For concentrated liquidity the answer separates total TVL from the capital actually sitting within one, two and five percent of the current price, so that idle out-of-range liquidity cannot be mistaken for depth. 24h and 7d volume come from a public yield directory and are marked as a foreign derivation with their own age; where the pool cannot be matched there unambiguously, volume stays null instead of being guessed. LP holder count and top LP share require an indexer and are always null with the reason stated. Delivers no recommendation and no verdict on whether a pool is good. - Preis: 0.005 USDC - MCP-Werkzeug: `pool_liquidity` - Eingabe: `["chain","pool","token_a","token_b","dex","fee_tier_ppm"]` ### POST /yield/normalize Resolves a pool in a public yield directory by chain, protocol and pool id or symbol, then rebuilds the number a buyer actually needs. Advertised total APY and a conservative APY are reported separately: the conservative figure uses the trailing seven-day realised base yield and deliberately excludes token emissions, because emissions are only worth what the reward token is worth. Every reward token is priced at the moment of the call and that price is stated as the assumption it is; the end of an emission schedule is not published by the directory and stays null rather than being guessed. For AMM pools the fee APR is additionally recomputed from 24h volume, the fee tier and TVL so the arithmetic behind the advertised base yield is visible and can be repeated; since the directory derives its base yield from the same inputs, a deviation of zero means the numbers are consistent, not that a second independent source confirmed them, and the answer says so. Impermanent loss is an estimate and labelled as one: it is computed from the real price path of both underlying tokens over the last 31 days with the constant-product formula, plus a scenario table. net_apy_after_gas subtracts entry, exit and harvest gas at the current gas price and native token price for each stake size, with the assumed gas units printed in the answer so the calculation can be repeated. Contains no recommendation and no forecast — a calculation with its assumptions open. - Preis: 0.006 USDC - MCP-Werkzeug: `yield_normalize` - Eingabe: `["chain","protocol","pool","stake_sizes_usd"]` ### POST /oracle/crosscheck Reads a Chainlink aggregator directly from the chain, pulls Pyth and RedStone, queries public exchange tickers and derives spot plus a 30-minute TWAP from the deepest Uniswap V3 pool of the asset against USDC on the requested chain. Every source carries its own age in seconds, its own price and a link to verify it. Nothing is smoothed into an average: the median is stated alongside the full list and the maximum deviation in basis points, because disagreement between sources is the finding, not a defect to hide. Sources quoted against USDT rather than USD are named and excluded from the median. DEX spot prices out of pools below the disclosed depth threshold are flagged as thin and therefore pushable. Chainlink heartbeat and deviation threshold are configuration that does not live on the aggregator contract — they stay null rather than being asserted, and an observed update interval derived from the last two rounds is given instead. Delivers no recommendation, no trading signal and no protection promise; every threshold used for the risk wording is listed in the answer. - Preis: 0.004 USDC - MCP-Werkzeug: `oracle_crosscheck` - Eingabe: `["chain","asset","oracles"]` ### POST /lending/health Resolves pool, price oracle and data provider through the protocol address provider rather than hard-coded addresses, then reads every reserve the wallet touches: collateral amounts, variable and stable debt, LTV, liquidation threshold, liquidation bonus and the borrow rate, all at one block. Values are computed with the price the protocol oracle reports, not with a market price from an exchange — a liquidation follows the oracle, and the oracle source contract per asset is named in the answer so it can be cross-checked with the oracle endpoint of this hub. liquidation_price is given per collateral asset as the oracle price at which the health factor reaches one while all other prices hold; where a single asset cannot trigger it even at price zero, the field says so instead of showing a number. Scenarios apply a uniform fall to all collateral while debt stays nominal, and that assumption is printed with them. Reads only: no transaction, no signature, no advice on whether to add collateral or close. Positions on protocols other than the ones listed are rejected rather than approximated. - Preis: 0.006 USDC - MCP-Werkzeug: `lending_health` - Eingabe: `["chain","protocol","wallet","scenarios_pct"]` ### POST /mev/risk Takes chain, token pair, input amount and slippage tolerance, finds the pool the trade would most likely use and reads its live state. The maximum the caller can lose is arithmetic and exact: the gap between the quoted output and the minimum output their own tolerance permits. The attacker profit is an estimate and labelled as one — the profit-maximising front-run size is searched for inside a constant-liquidity pool model, bounded by the largest front-run the caller own tolerance still permits, and the same model is checked against the official Quoter for the unattacked swap so that model_error_bps is visible rather than hidden. That profit is then set against the gas two attacker transactions cost: below it, the attack does not pay for itself, and the answer says so instead of warning about a danger that does not add up. Whether the chain even has a public pending pool is stated with its reason, because on a single-sequencer chain a third party cannot see the trade before the block. recent_sandwiches_on_pool is not estimated but counted from Swap events in the scanned block window, with the window length and the detection pattern disclosed. Mitigations come with numbers: what a tighter tolerance caps the loss at, what splitting the order costs in extra gas and saves in impact. Nothing is executed, forwarded, signed or submitted, and no protection is promised. - Preis: 0.006 USDC - MCP-Werkzeug: `mev_risk` - Eingabe: `["chain","token_in","token_out","amount_in","slippage_bps","route","scan_history"]` ## Weitere Flächen - OpenAPI: https://defi.halowerk.com/openapi.json - Preise: https://defi.halowerk.com/pricing - x402-Manifest: https://defi.halowerk.com/.well-known/x402 - Bazaar: https://defi.halowerk.com/.well-known/x402/bazaar - MCP: https://defi.halowerk.com/mcp