{"serverId":"mcp-registry/io.thegavel/gavel","tools":[{"name":"check_wallet_status","fixed":{"name":"check_wallet_status","description":"Returns a structured readiness report for the given wallet address: native ETH balance for gas, relevant ERC-20 balances (USDC, USDT, WBTC), current allowances against the Gavel LoanProtocol and ListingService, and a precomputed list of blockers (what's stopping the wallet from placing bids or creating auctions).\n\nUseful for: onboarding flows where an LLM agent needs to verify a user's wallet is funded and approved before walking them through a transaction. The 'readiness.blockers' field is the ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","description":"The EOA or smart-account address to inspect. Any valid Ethereum address. The wallet does not need to be the caller — anyone can check anyone's balance, this is public chain data."},"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","default":"arbitrum-one","description":"Network to inspect. Default 'arbitrum-one' (mainnet, live protocol)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Check Wallet Readiness"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":307,"tokensAfter":307},{"name":"find_auctions_matching_criteria","fixed":{"name":"find_auctions_matching_criteria","description":"Returns Gavel auctions filtered by the criteria you supply. Does not rank, score, or recommend a specific auction — only filters by the parameters provided. The user chooses what to act on.\n\nUseful for: an agent helping a user narrow a long auction list down to the subset matching their stated yield, duration, and LTV preferences.\n\nAll filter parameters are optional. Unspecified parameters mean \"no constraint on that dimension\". When status is omitted, defaults to 'open' (actionable auctions onl","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"pair":{"type":"string","description":"Collateral/loan pair (e.g. 'WBTC/USDC'). Omit for any pair."},"limit":{"type":"integer","default":20,"maximum":100,"minimum":1,"description":"Maximum results to return. Caps at 100."},"status":{"enum":["open","completed","all"],"type":"string","default":"open","description":"Auction lifecycle filter. 'open' = actionable (default), 'completed' = settled, 'all' = both."},"max_ltv":{"type":"number","description":"Maximum LTV. Omit for no upper bound."},"min_ltv":{"type":"number","description":"Minimum LTV (loan-to-value), as decimal 0.0-1.0. Omit for no lower bound."},"max_rate_pct":{"type":"number","description":"Maximum implied APR in percent. Omit for no upper bound."},"min_rate_pct":{"type":"number","description":"Minimum implied APR in percent (e.g. 5.5 means at least 5.5%). Omit for no lower bound."},"max_duration_days":{"type":"integer","description":"Maximum loan duration in days. Omit for no upper bound."},"min_duration_days":{"type":"integer","description":"Minimum loan duration in days. Omit for no lower bound."},"min_remaining_hours":{"type":"number","description":"Only return auctions with at least this many hours left before close. Useful for bidders who need time to act. Ignored when status != 'open'."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Find Auctions Matching Criteria"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":547,"tokensAfter":547},{"name":"get_address_history","fixed":{"name":"get_address_history","description":"What has this address done on the protocol? Public chain events only, with no enrichment beyond them.\n\nAuctions originated, bids placed, positions open and closed, and a summary of outcomes. No clustering, no labelling and no inferred identity: nothing in the response is not already public on-chain. Any address may be queried by anyone; no authorisation is needed.\n\nThis is the supervisor page's data source — the read a person uses to check what an agent they supervise has actually done.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","description":"The address to inspect. Any valid Ethereum address; it need not be the caller."},"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","description":"Network. Default 'arbitrum-one' (mainnet). Use 'arbitrum-sepolia' for the testnet deployment, which carries a far deeper book — but note the two run different contract builds, so a testnet observation is not a mainnet fact."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Address history on the protocol"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":314,"tokensAfter":314},{"name":"get_book","fixed":{"name":"get_book","description":"What is open right now — auctions, bids and positions listed? Current chain state, with counts rather than a characterisation of depth.\n\nOpen auctions with their best bid and time remaining, those closing within 24 hours, and totals: open auction count, principal outstanding, collateral locked, and distinct lenders and borrowers over 30 days.\n\n⚠ Fields that cannot be answered are null, not empty. positions_listed is null where marketplace listings are not indexed — an empty array would assert th","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"pair":{"type":"string","description":"Restrict to one collateral/loan pair. Omit for all."},"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","description":"Network. Default 'arbitrum-one' (mainnet). Use 'arbitrum-sepolia' for the testnet deployment, which carries a far deeper book — but note the two run different contract builds, so a testnet observation is not a mainnet fact."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"The open book"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":298,"tokensAfter":298},{"name":"get_gavel_indicator","fixed":{"name":"get_gavel_indicator","description":"Returns the current value of a single Aletheia indicator by id, with its methodology reference. This server serves this protocol's own indicator set, including those anchored on its rate. Call list_gavel_indicators first to discover valid ids.\n\nOptionally returns the historical series instead of the current value (set include_history). History is free and unmetered on the same terms as the current value.\n\nThis is descriptive data; no recommendation is provided. An indicator that has no reading o","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","description":"Indicator id from list_gavel_indicators, e.g. 'yield-curve', 'vrb', 'drp'."},"to":{"type":"string","description":"History end, ISO 8601 date. Only meaningful with include_history."},"from":{"type":"string","description":"History start, ISO 8601 date. Only meaningful with include_history."},"include_history":{"type":"boolean","default":false,"description":"If true, return the historical series instead of the current value. Not every indicator has one."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get a Gavel Indicator"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":331,"tokensAfter":331},{"name":"get_loan_status","fixed":{"name":"get_loan_status","description":"Returns the current state of a single Gavel loan and what action, if any, is available to whom. Designed to be re-called during a long conversation so lifecycle changes can be surfaced to the user.\n\n'next_actions' is an array of {actor, action, calldata_tool} tuples naming the tool that prepares each transaction, so the next step can be taken without guessing. 'lifecycle_summary' gives the borrower's and lender's view in plain English.\n\nThis is descriptive data; no recommendation is provided. Ve","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["loan_id"],"properties":{"loan_id":{"type":"integer","description":"The loan id. For v1 auctions this equals the auction id — see get_user_positions."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Gavel Loan Status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"get_mvrv","fixed":{"name":"get_mvrv","description":"This tool has moved. Cross-venue credit data is served by the Bitcoin Credit Stack MCP at https://mcp.bitcoincreditstack.com/mcp, where this tool is called `get_mvrv`. Calling it here returns a structured 'moved' error naming the host. This shim is temporary and will be removed.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Moved — now served by the Bitcoin Credit Stack"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":116,"tokensAfter":116},{"name":"get_protocol_reference","fixed":{"name":"get_protocol_reference","description":"Returns the Gavel Protocol's complete on-chain reference data for the requested network: contract addresses, supported tokens (collateral and loan), key function signatures, operational conventions (like the Position NFT tokenId formula), and Etherscan/ABI references.\n\nUse this tool when an agent needs to:\n  - Look up a contract address before constructing a transaction\n  - Get the function signature for placeBid, createAuction, repayLoan, etc.\n  - Understand the tokenId convention for borrower ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","default":"arbitrum-one","description":"Network to look up. Default 'arbitrum-one' (mainnet, live protocol). Use 'arbitrum-sepolia' for the testnet deployment."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Gavel Protocol Reference"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":255,"tokensAfter":255},{"name":"get_user_positions","fixed":{"name":"get_user_positions","description":"Returns every Gavel position an address holds — as borrower, as winning lender, or as a bidder on an auction that has not closed.\n\nEach position carries its lifecycle state (auction_open, bid_placed, bid_lost, active, matured_unclaimed, repaid, defaulted), the maturity date and time remaining, the counterparty, and 'next_action_available' — the one thing this address can do next (nothing, repay, claim_collateral, claim_repayment, claim_refund). 'lifecycle_summary' is a plain-English sentence you","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","description":"The address to inspect. Any valid Ethereum address; it need not be the caller."},"include_settled":{"type":"boolean","default":false,"description":"Include finished positions (repaid, defaulted, lost bids). Default false — only what is still live."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Gavel Positions for an Address"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":276,"tokensAfter":276},{"name":"get_verification_bundle","fixed":{"name":"get_verification_bundle","description":"What can be checked about the contracts, and what did the last check return? Observations with their block heights; the verdict is the reader's.\n\nContract addresses and their implementations, the bytecode hash of each, the upgradeability position, the privileged-function map with whether each can touch user funds, the audit reference, and five structural promises — each with the check that would falsify it and what that check returned.\n\n⚠ Read the fields, not the impression. 'match' is \"unchecke","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","description":"Network. Default 'arbitrum-one' (mainnet). Use 'arbitrum-sepolia' for the testnet deployment, which carries a far deeper book — but note the two run different contract builds, so a testnet observation is not a mainnet fact."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Verification bundle"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":277,"tokensAfter":277},{"name":"get_yield_curve","fixed":{"name":"get_yield_curve","description":"Returns the current fitted Gavel yield curve for the requested collateral/loan pair. Rates are oracle-free, derived from auctions in The Gavel Protocol. The curve is a log-quadratic fit through binned midpoints.\n\nIMPORTANT — every rate returned is an evaluation of the fitted curve, not an observed trade, and the published tenor set extends past the deepest observation. Tenors with no underlying bin data are returned as fitted values and listed in 'extrapolated_tenors'; treat those as model outpu","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"pair":{"type":"string","default":"WBTC/USDC","description":"Collateral/loan pair. Default 'WBTC/USDC'. Currently the only live pair on mainnet."},"include_points":{"type":"boolean","default":false,"description":"If true, include the underlying scatter points used to fit the curve. Larger response."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Gavel Yield Curve"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":271,"tokensAfter":271},{"name":"list_comparables","fixed":{"name":"list_comparables","description":"Which recent auctions resemble these parameters, and how did each clear? Returns the individual observations so the caller can reason from them directly.\n\nNearest-k settled auctions by normalised distance on loan amount, LTV and tenor. Every row carries its clearing APR, bid count, and whether its originator was Aletheia's own account. Below MIN_COMPARABLES the rows are still returned, with the threshold and the observed count named — no aggregate is computed over them.\n\n⚠ The own-account flag i","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"k":{"type":"integer","maximum":25,"minimum":1,"description":"How many comparables to return. Caps at 25; default 10."},"ltv":{"type":"number","maximum":1,"minimum":0,"description":"Loan-to-value at origination, as a decimal 0–1."},"pair":{"type":"string","description":"Collateral/loan pair. Default 'WBTC/USDC'."},"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","description":"Network. Default 'arbitrum-one' (mainnet). Use 'arbitrum-sepolia' for the testnet deployment, which carries a far deeper book — but note the two run different contract builds, so a testnet observation is not a mainnet fact."},"tenor_days":{"type":"number","description":"Loan term in days. The protocol's minimum is 7.","exclusiveMinimum":0},"loan_amount":{"type":"number","description":"Loan size to match against, in loan-token units.","exclusiveMinimum":0},"window_days":{"type":"integer","description":"Only consider auctions settled within this many days.","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Comparable settled auctions"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":462,"tokensAfter":462},{"name":"list_fiat_onramps","fixed":{"name":"list_fiat_onramps","description":"Returns a catalog of fiat-to-USDC onramps that deliver native USDC on the requested chain. Does not rank or endorse a specific provider — entries are listed alphabetically so the response is deterministic. The user chooses which onramp to use.\n\nFilter by country (ISO 3166 alpha-2) and amount to narrow the catalog to providers that operate in the user's jurisdiction and accept their transaction size.\n\nUseful for: an LLM agent helping a novice user fund their wallet from fiat USD/EUR/GBP. The LLM ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"chain":{"enum":["arbitrum-one"],"type":"string","default":"arbitrum-one","description":"Target chain. Currently only 'arbitrum-one' supported — all listed providers deliver native USDC on Arbitrum One."},"country":{"type":"string","description":"ISO 3166 alpha-2 country code (e.g. 'US', 'GB', 'FR'). Filters to providers supporting that country. Omit to return all providers."},"amount_usd":{"type":"number","description":"Amount in USD the user plans to onramp. Filters out providers whose limits don't cover this amount. Omit to ignore amount limits."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Fiat Onramp Catalog"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":343,"tokensAfter":343},{"name":"list_gavel_indicators","fixed":{"name":"list_gavel_indicators","description":"Returns the catalogue of Aletheia indicators computed from The Gavel Protocol and the Bitcoin chain: id, name, family, units, description, and whether the indicator is currently live on this network.\n\nThree families: 'credit' (credit-market assessments), 'onchain' (commodity chain metrics such as MVRV and SOPR), and 'market' (external context — DeFi rates, stablecoin supply, macro).\n\nUse this to discover what is available, then call get_gavel_indicator with an id. This tool returns a catalogue; ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"family":{"enum":["credit","onchain","market"],"type":"string","description":"Restrict to one family. Omit to return the whole catalogue."},"live_only":{"type":"boolean","default":false,"description":"If true, omit indicators that are not currently live on this network."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Gavel Indicator Catalogue"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":265,"tokensAfter":265},{"name":"list_onchain_indicators","fixed":{"name":"list_onchain_indicators","description":"This tool has moved. Cross-venue credit data is served by the Bitcoin Credit Stack MCP at https://mcp.bitcoincreditstack.com/mcp, where this tool is called `list_onchain_indicators`. Calling it here returns a structured 'moved' error naming the host. This shim is temporary and will be removed.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Moved — now served by the Bitcoin Credit Stack"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"list_wallet_options","fixed":{"name":"list_wallet_options","description":"Returns a catalog of self-custody wallet apps compatible with Gavel (i.e., that support Arbitrum One). Does not rank wallets by quality. Each entry has a 'suitability_tags' list describing the typical user fit as factual attributes ('beginner', 'mobile_first', 'hardware', 'multisig', etc.) — the LLM and user pick based on those.\n\nUseful for: an LLM agent helping a user without an existing wallet choose one before onramping funds. The LLM should explain the custody-model and platform implications","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"platform":{"enum":["ios","android","browser_extension","desktop","hardware","mobile_app"],"type":"string","description":"Filter wallets to those available on the specified platform. Omit to return all."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Compatible Wallet Catalog"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":245,"tokensAfter":245},{"name":"prepare_claim_refund_calldata","fixed":{"name":"prepare_claim_refund_calldata","description":"Builds an unsigned transaction blueprint for reclaiming funds held by the protocol after a losing bid.\n\nWhen you are outbid, your funds stay claimable rather than being pushed back automatically. This encodes the claim for a given token.\n\nReturns an unsigned transaction blueprint for the requested intent. The user is responsible for reviewing, signing, and broadcasting via their own wallet. Aletheia does not hold keys or dispatch transactions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["token_address","claimant_address"],"properties":{"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","default":"arbitrum-one","description":"Network. Default 'arbitrum-one' (mainnet, real funds)."},"token_address":{"type":"string","description":"The token to reclaim, e.g. the USDC address you bid with."},"claimant_address":{"type":"string","description":"Your address — used to check there is a pending refund."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Prepare a Refund Claim"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":297,"tokensAfter":297},{"name":"prepare_create_auction_calldata","fixed":{"name":"prepare_create_auction_calldata","description":"Builds an unsigned transaction blueprint for creating a borrow auction — you post collateral and ask lenders to compete to lend against it — including the prerequisite collateral approval.\n\nEvery term is yours to set: which collateral and how much, which loan token and how much, the maximum repayment you will accept, the loan duration, how long the auction runs, and the bid step. This tool encodes what you specify and warns about consequences; it does not propose terms, rates or a loan size.\n\nLe","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["borrower_address","collateral_token","collateral_amount","loan_token","loan_amount","max_repayment","loan_duration_days","auction_duration_hours"],"properties":{"network":{"enum":["arbitrum-one","arbitrum-sepolia"],"type":"string","default":"arbitrum-one","description":"Network. Default 'arbitrum-one' (mainnet, real funds)."},"bid_step":{"type":"string","default":"0","description":"Minimum improvement between bids, decimal string in loan-token units."},"loan_token":{"type":"string","description":"Loan token address (what you want to borrow)."},"loan_amount":{"type":"string","description":"Amount to borrow, decimal string, e.g. '2500.00'."},"max_repayment":{"type":"string","description":"The most you will repay at maturity, decimal string. Lenders bid below this."},"borrower_address":{"type":"string","description":"Your address — used to read collateral balance and allowance."},"collateral_token":{"type":"string","description":"Collateral token address. See get_protocol_reference for whitelisted tokens."},"collateral_amount":{"type":"string","description":"Collateral to post, decimal string in token units, e.g. '0.05'."},"loan_duration_days":{"type":"number","description":"Loan term in days."},"auction_duration_hours":{"type":"number","description":"How long the auction accepts bids, in hours."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Prepare a Gavel Auction"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":558,"tokensAfter":558}],"toolsChanged":18,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}