{"serverId":"mcp-registry/com.predictasiax/mcp","tools":[{"name":"pax.access_request_create","fixed":{"name":"pax_access_request_create","description":"Submit an access-request for a builder track (no email required — provide Telegram / Signal / Discord / Matrix / X DM handle).","inputSchema":{"type":"object","required":["contact_channel","contact_handle","use_case"],"properties":{"track":{"enum":["sandbox","trade_capped","trade_full","genesis","partner"],"type":"string"},"org_name":{"type":"string"},"use_case":{"type":"string","maxLength":2000,"minLength":20},"jurisdiction":{"type":"string"},"contact_handle":{"type":"string"},"contact_channel":{"enum":["telegram","signal","discord","matrix","x_dm"],"type":"string"},"intended_scopes":{"type":"array","items":{"type":"string"}}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.access_request_create\" → \"pax_access_request_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"pax.access_request_status","fixed":{"name":"pax_access_request_status","description":"Check status of a pending access request by its request_id.","inputSchema":{"type":"object","required":["request_id"],"properties":{"request_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.access_request_status\" → \"pax_access_request_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"pax.balance_get","fixed":{"name":"pax_balance_get","description":"USDT free + reserved balance for a subaccount.","inputSchema":{"type":"object","required":["user_id"],"properties":{"user_id":{"type":"string"},"subaccount_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.balance_get\" → \"pax_balance_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":62,"tokensAfter":62},{"name":"pax.builder_apikeys_list","fixed":{"name":"pax_builder_apikeys_list","description":"List API keys for a specific app (metadata only — secrets never returned).","inputSchema":{"type":"object","required":["app_id"],"properties":{"app_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.builder_apikeys_list\" → \"pax_builder_apikeys_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":62,"tokensAfter":62},{"name":"pax.builder_apps_list","fixed":{"name":"pax_builder_apps_list","description":"List apps registered under the current builder profile.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.builder_apps_list\" → \"pax_builder_apps_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":43,"tokensAfter":43},{"name":"pax.builder_me","fixed":{"name":"pax_builder_me","description":"Return the current builder profile: tier, apps count, 30d volume + fee revenue, verified status.","inputSchema":{"type":"object","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"pax.builder_me\" → \"pax_builder_me\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":52,"tokensAfter":52},{"name":"pax.cancel_all_orders","fixed":{"name":"pax_cancel_all_orders","description":"Bulk cancel all open orders for a user + (optional) market. Atomic.","inputSchema":{"type":"object","required":["user_id"],"properties":{"user_id":{"type":"string"},"market_id":{"type":"string","description":"Omit to cancel across all markets"},"subaccount_id":{"type":"string"}}},"annotations":{"destructive":true,"safety_notes":"Bulk cancel. Confirm scope with the user before every call.","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.cancel_all_orders\" → \"pax_cancel_all_orders\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":92,"tokensAfter":92},{"name":"pax.cancel_order","fixed":{"name":"pax_cancel_order","description":"Cancel an open or partially-filled order.","inputSchema":{"type":"object","required":["order_id"],"properties":{"order_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.cancel_order\" → \"pax_cancel_order\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":52,"tokensAfter":52},{"name":"pax.category_list","fixed":{"name":"pax_category_list","description":"List all market categories with counts and 24h volume.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.category_list\" → \"pax_category_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":41,"tokensAfter":41},{"name":"pax.composer_proposal_submit","fixed":{"name":"pax_composer_proposal_submit","description":"Submit a new market proposal from a template. Enters admin review queue.","inputSchema":{"type":"object","required":["template_id","title","rules","sources","cutoff_ms","deadline_ms"],"properties":{"rules":{"type":"string","minLength":20},"title":{"type":"string","maxLength":200,"minLength":5},"sources":{"type":"array","items":{"type":"string","description":"https:// URLs used as resolution sources"}},"question":{"type":"string"},"cutoff_ms":{"type":"integer"},"deadline_ms":{"type":"integer"},"template_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.composer_proposal_submit\" → \"pax_composer_proposal_submit\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":163,"tokensAfter":163},{"name":"pax.composer_template_get","fixed":{"name":"pax_composer_template_get","description":"Read a single market template with resolution rules + example config.","inputSchema":{"type":"object","required":["template_id"],"properties":{"template_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.composer_template_get\" → \"pax_composer_template_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":64,"tokensAfter":64},{"name":"pax.composer_templates_list","fixed":{"name":"pax_composer_templates_list","description":"List market templates available for opening new markets (crypto price binary, sports, election, etc).","inputSchema":{"type":"object","properties":{"kind":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.composer_templates_list\" → \"pax_composer_templates_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":64,"tokensAfter":64},{"name":"pax.fee_estimate","fixed":{"name":"pax_fee_estimate","description":"Estimate the taker fee for a hypothetical order under the PAX Adaptive Fee Curve (PAF): 8-25 bps depending on price extremity, plus optional additive partner fee (0-100 bps).","inputSchema":{"type":"object","required":["market_id","price","size"],"properties":{"size":{"type":"string"},"price":{"type":"string"},"user_id":{"type":"string"},"market_id":{"type":"string"},"additive_fee_bps":{"type":"integer","maximum":100,"minimum":0}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.fee_estimate\" → \"pax_fee_estimate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":133,"tokensAfter":133},{"name":"pax.fee_ledger_read","fixed":{"name":"pax_fee_ledger_read","description":"Read fee_ledger entries attributed to the current builder — 4-way split shares + additive builder fees.","inputSchema":{"type":"object","properties":{"to_ms":{"type":"integer"},"cursor":{"type":"string"},"from_ms":{"type":"integer"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.fee_ledger_read\" → \"pax_fee_ledger_read\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":78,"tokensAfter":78},{"name":"pax.health","fixed":{"name":"pax_health","description":"MCP server health + protocol version + D1 reachability + upstream latency.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.health\" → \"pax_health\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":45,"tokensAfter":45},{"name":"pax.liquidity_leaderboard","fixed":{"name":"pax_liquidity_leaderboard","description":"Public leaderboard of top LQF stipend earners over a rolling window. Optional market_id filter.","inputSchema":{"type":"object","properties":{"days":{"type":"integer","maximum":30,"minimum":1},"top_n":{"type":"integer","maximum":100,"minimum":1},"market_id":{"type":"string"}}}},"changes":[{"kind":"name","detail":"Renamed \"pax.liquidity_leaderboard\" → \"pax_liquidity_leaderboard\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":92,"tokensAfter":92},{"name":"pax.market_get","fixed":{"name":"pax_market_get","description":"Get full detail for a single market: title, question, prices, volume, open interest, resolution rules, template.","inputSchema":{"type":"object","required":["market_id"],"properties":{"market_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.market_get\" → \"pax_market_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"pax.market_orderbook","fixed":{"name":"pax_market_orderbook","description":"Read top-of-book bid/ask ladder for a market. Depth capped at 20 levels each side.","inputSchema":{"type":"object","required":["market_id"],"properties":{"side":{"enum":["yes","no","both"],"type":"string","default":"both"},"depth":{"type":"integer","default":10,"maximum":20,"minimum":1},"market_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.market_orderbook\" → \"pax_market_orderbook\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"pax.market_price_history","fixed":{"name":"pax_market_price_history","description":"Time-series probability history for a market (LTTB-sampled). Range 1h through 90d.","inputSchema":{"type":"object","required":["market_id"],"properties":{"range":{"enum":["1h","6h","1d","7d","30d","90d"],"type":"string","default":"1d"},"market_id":{"type":"string"}}}},"changes":[{"kind":"name","detail":"Renamed \"pax.market_price_history\" → \"pax_market_price_history\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"pax.market_search","fixed":{"name":"pax_market_search","description":"Search PredictAsiaX markets by keyword or category. Returns paginated list with prices, volume, status.","inputSchema":{"type":"object","properties":{"q":{"type":"string","description":"Free-text query on title/question"},"limit":{"type":"integer","maximum":100,"minimum":1},"cursor":{"type":"string","description":"Opaque pagination cursor from previous response"},"status":{"enum":["open","closed","settled","resolved"],"type":"string"},"category":{"type":"string","description":"Filter by category (crypto/politics/sports/tech/macro/asia)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.market_search\" → \"pax_market_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":164,"tokensAfter":164},{"name":"pax.markets_top_volume","fixed":{"name":"pax_markets_top_volume","description":"24h volume leaderboard. Useful for surfacing hot markets.","inputSchema":{"type":"object","properties":{"top_n":{"type":"integer","default":20,"maximum":100,"minimum":1},"window":{"enum":["1h","24h","7d"],"type":"string","default":"24h"},"category":{"type":"string"}}}},"changes":[{"kind":"name","detail":"Renamed \"pax.markets_top_volume\" → \"pax_markets_top_volume\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"pax.mm_quote_post","fixed":{"name":"pax_mm_quote_post","description":"Post a two-sided MM quote to a market. TTL 1-3600s. Requires designated MM status for rebate.","inputSchema":{"type":"object","required":["market_id","bid_price","ask_price","size"],"properties":{"size":{"type":"string"},"ttl_sec":{"type":"integer","default":60,"maximum":3600,"minimum":1},"ask_price":{"type":"string"},"bid_price":{"type":"string"},"market_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.mm_quote_post\" → \"pax_mm_quote_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"pax.mm_quotes_list","fixed":{"name":"pax_mm_quotes_list","description":"List active MM quotes for a market.","inputSchema":{"type":"object","required":["market_id"],"properties":{"market_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.mm_quotes_list\" → \"pax_mm_quotes_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":51,"tokensAfter":51},{"name":"pax.mm_stipend_estimate","fixed":{"name":"pax_mm_stipend_estimate","description":"Real-time LQF stipend forecast for a market maker on one market this epoch. Returns projected payout at 00:15 UTC based on snapshots seen so far.","inputSchema":{"type":"object","required":["user_id","market_id"],"properties":{"user_id":{"type":"string"},"market_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.mm_stipend_estimate\" → \"pax_mm_stipend_estimate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"pax.mm_stipend_history","fixed":{"name":"pax_mm_stipend_history","description":"Historical LQF stipend payouts for a market maker. Optional market_id filter, default limit 30.","inputSchema":{"type":"object","required":["user_id"],"properties":{"limit":{"type":"integer","maximum":200,"minimum":1},"user_id":{"type":"string"},"market_id":{"type":"string"}}}},"changes":[{"kind":"name","detail":"Renamed \"pax.mm_stipend_history\" → \"pax_mm_stipend_history\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":91,"tokensAfter":91},{"name":"pax.orders_history","fixed":{"name":"pax_orders_history","description":"Historical orders (filled + cancelled + expired) for the user, paginated.","inputSchema":{"type":"object","required":["user_id"],"properties":{"to_ms":{"type":"integer"},"cursor":{"type":"string"},"from_ms":{"type":"integer"},"user_id":{"type":"string"},"market_id":{"type":"string"},"subaccount_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.orders_history\" → \"pax_orders_history\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"pax.orders_open","fixed":{"name":"pax_orders_open","description":"List currently-open orders for the user (status IN open, partially_filled).","inputSchema":{"type":"object","required":["user_id"],"properties":{"user_id":{"type":"string"},"market_id":{"type":"string"},"subaccount_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.orders_open\" → \"pax_orders_open\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":78,"tokensAfter":78},{"name":"pax.place_order","fixed":{"name":"pax_place_order","description":"Submit a new order. Requires Idempotency-Key header on the transport. Tier caps enforced server-side.","inputSchema":{"type":"object","required":["user_id","market_id","side","price","size","client_order_id"],"properties":{"side":{"enum":["yes","no","buy","sell"],"type":"string"},"size":{"type":"string","description":"Decimal string"},"price":{"type":"string","description":"Decimal string 0.01..0.99"},"user_id":{"type":"string"},"market_id":{"type":"string"},"builder_code":{"type":"string","description":"Optional bytes32 hex for additive builder fee attribution"},"subaccount_id":{"type":"string"},"client_order_id":{"type":"string"},"additive_fee_bps":{"type":"integer","maximum":100,"minimum":0,"description":"Optional builder-set additive fee (0-100 bps)"}}},"annotations":{"destructive":true,"safety_notes":"This tool spends real funds. Confirm with the user before every call. Fees are additive to platform fee.","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.place_order\" → \"pax_place_order\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"pax.portfolio_history","fixed":{"name":"pax_portfolio_history","description":"Historical PnL curve (realized + unrealized) for the user, sampled daily.","inputSchema":{"type":"object","required":["user_id"],"properties":{"to_ms":{"type":"integer"},"from_ms":{"type":"integer"},"user_id":{"type":"string"},"subaccount_id":{"type":"string"}}}},"changes":[{"kind":"name","detail":"Renamed \"pax.portfolio_history\" → \"pax_portfolio_history\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"pax.portfolio_read","fixed":{"name":"pax_portfolio_read","description":"Read the user's current positions, mark-price PNL, unrealized PnL, and USDT balances.","inputSchema":{"type":"object","required":["user_id"],"properties":{"user_id":{"type":"string"},"subaccount_id":{"type":"string","description":"Omit to read primary subaccount"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.portfolio_read\" → \"pax_portfolio_read\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"pax.positions_list","fixed":{"name":"pax_positions_list","description":"List open positions across markets with size + entry price + current mark.","inputSchema":{"type":"object","required":["user_id"],"properties":{"user_id":{"type":"string"},"market_id":{"type":"string"},"subaccount_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.positions_list\" → \"pax_positions_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":79,"tokensAfter":79},{"name":"pax.probability_movers","fixed":{"name":"pax_probability_movers","description":"Return markets whose YES probability moved the most in a window. Ranked by |delta|.","inputSchema":{"type":"object","required":["from_ms","to_ms"],"properties":{"to_ms":{"type":"integer","description":"Window end (ms since epoch)"},"top_n":{"type":"integer","default":10,"maximum":100,"minimum":1},"from_ms":{"type":"integer","description":"Window start (ms since epoch)"},"category":{"type":"string"},"direction":{"enum":["up","down","both"],"type":"string","default":"both"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.probability_movers\" → \"pax_probability_movers\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"pax.resolution_evidence","fixed":{"name":"pax_resolution_evidence","description":"Return the evidence + sources used to resolve a market.","inputSchema":{"type":"object","required":["market_id"],"properties":{"market_id":{"type":"string"}}}},"changes":[{"kind":"name","detail":"Renamed \"pax.resolution_evidence\" → \"pax_resolution_evidence\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":58,"tokensAfter":58},{"name":"pax.rfq_accept","fixed":{"name":"pax_rfq_accept","description":"Accept a specific RFQ quote — atomically fills at the quoted price.","inputSchema":{"type":"object","required":["rfq_id","quote_id"],"properties":{"rfq_id":{"type":"string"},"quote_id":{"type":"string"}}},"annotations":{"destructive":true,"safety_notes":"Accepting an RFQ quote spends real funds immediately at the quoted price."}},"changes":[{"kind":"name","detail":"Renamed \"pax.rfq_accept\" → \"pax_rfq_accept\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":69,"tokensAfter":69},{"name":"pax.rfq_create","fixed":{"name":"pax_rfq_create","description":"Create an RFQ (request for quote) — asks MMs to bid for a specific size.","inputSchema":{"type":"object","required":["market_id","side","size"],"properties":{"side":{"enum":["yes","no"],"type":"string"},"size":{"type":"string"},"ttl_sec":{"type":"integer","default":60,"maximum":600,"minimum":10},"market_id":{"type":"string"},"max_price":{"type":"string"},"min_price":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.rfq_create\" → \"pax_rfq_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"pax.sandbox_agent_examples","fixed":{"name":"pax_sandbox_agent_examples","description":"End-to-end examples for building an AI agent against PAX — sandbox keys, minimal flows.","inputSchema":{"type":"object","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"pax.sandbox_agent_examples\" → \"pax_sandbox_agent_examples\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":53,"tokensAfter":53},{"name":"pax.subaccount_close","fixed":{"name":"pax_subaccount_close","description":"Close (freeze) a subaccount. Rejects if positions/balance/open orders remain.","inputSchema":{"type":"object","required":["user_id","subaccount_id"],"properties":{"user_id":{"type":"string"},"subaccount_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.subaccount_close\" → \"pax_subaccount_close\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":76,"tokensAfter":76},{"name":"pax.subaccount_create","fixed":{"name":"pax_subaccount_create","description":"Create a new subaccount under the primary user account.","inputSchema":{"type":"object","required":["user_id","label","kind","currency"],"properties":{"kind":{"enum":["trading","mm","copy_vault","rfq_mm","custody","clearing"],"type":"string"},"label":{"type":"string","maxLength":100,"minLength":1},"user_id":{"type":"string"},"currency":{"enum":["USDT","USDC"],"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.subaccount_create\" → \"pax_subaccount_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"pax.subaccount_list","fixed":{"name":"pax_subaccount_list","description":"List all subaccounts for a user with kind, currency, and balance.","inputSchema":{"type":"object","required":["user_id"],"properties":{"user_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.subaccount_list\" → \"pax_subaccount_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":59,"tokensAfter":59},{"name":"pax.subaccount_transfer","fixed":{"name":"pax_subaccount_transfer","description":"Transfer USDT between subaccounts under the same primary user.","inputSchema":{"type":"object","required":["user_id","from_subaccount_id","to_subaccount_id","amount"],"properties":{"amount":{"type":"string"},"user_id":{"type":"string"},"to_subaccount_id":{"type":"string"},"from_subaccount_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.subaccount_transfer\" → \"pax_subaccount_transfer\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"pax.tier_status","fixed":{"name":"pax_tier_status","description":"Read the current builder tier + auto-graduation progress (30d volume + days remaining + abuse flags).","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.tier_status\" → \"pax_tier_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":54,"tokensAfter":54},{"name":"pax.webhook_create","fixed":{"name":"pax_webhook_create","description":"Register a new webhook endpoint. Returns whsec_<hex> ONCE for signing verification.","inputSchema":{"type":"object","required":["app_id","url","events"],"properties":{"url":{"type":"string","description":"https:// URL, no userinfo, no fragment"},"label":{"type":"string","maxLength":100},"app_id":{"type":"string"},"events":{"type":"array","items":{"enum":["trade.filled","market.resolved","payout.available","payout.paid","auth.token.revoked"],"type":"string"}}}},"annotations":{"destructive":true,"safety_notes":"Returned whsec_* is shown once — user must store it immediately.","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pax.webhook_create\" → \"pax_webhook_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"pax.webhook_deliveries","fixed":{"name":"pax_webhook_deliveries","description":"Read recent webhook delivery attempts for an endpoint (status, HTTP code, retry count).","inputSchema":{"type":"object","required":["webhook_id"],"properties":{"cursor":{"type":"string"},"from_ms":{"type":"integer"},"webhook_id":{"type":"string"}}}},"changes":[{"kind":"name","detail":"Renamed \"pax.webhook_deliveries\" → \"pax_webhook_deliveries\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"pax.webhook_endpoints_list","fixed":{"name":"pax_webhook_endpoints_list","description":"List webhook endpoints registered under an app.","inputSchema":{"type":"object","required":["app_id"],"properties":{"app_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pax.webhook_endpoints_list\" → \"pax_webhook_endpoints_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55}],"toolsChanged":44,"tokensSaved":0,"todo":[{"tool":"pax_access_request_create","params":["track","org_name","use_case","jurisdiction","contact_handle","contact_channel","intended_scopes"]},{"tool":"pax_access_request_status","params":["request_id"]},{"tool":"pax_balance_get","params":["user_id","subaccount_id"]},{"tool":"pax_builder_apikeys_list","params":["app_id"]},{"tool":"pax_cancel_all_orders","params":["user_id","subaccount_id"]},{"tool":"pax_cancel_order","params":["order_id"]},{"tool":"pax_composer_proposal_submit","params":["rules","title","sources","question","cutoff_ms","deadline_ms","template_id"]},{"tool":"pax_composer_template_get","params":["template_id"]},{"tool":"pax_composer_templates_list","params":["kind"]},{"tool":"pax_fee_estimate","params":["size","price","user_id","market_id","additive_fee_bps"]},{"tool":"pax_fee_ledger_read","params":["to_ms","cursor","from_ms"]},{"tool":"pax_liquidity_leaderboard","params":["days","top_n","market_id"]},{"tool":"pax_market_get","params":["market_id"]},{"tool":"pax_market_orderbook","params":["side","depth","market_id"]},{"tool":"pax_market_price_history","params":["range","market_id"]},{"tool":"pax_market_search","params":["limit","status"]},{"tool":"pax_markets_top_volume","params":["top_n","window","category"]},{"tool":"pax_mm_quote_post","params":["size","ttl_sec","ask_price","bid_price","market_id"]},{"tool":"pax_mm_quotes_list","params":["market_id"]},{"tool":"pax_mm_stipend_estimate","params":["user_id","market_id"]},{"tool":"pax_mm_stipend_history","params":["limit","user_id","market_id"]},{"tool":"pax_orders_history","params":["to_ms","cursor","from_ms","user_id","market_id","subaccount_id"]},{"tool":"pax_orders_open","params":["user_id","market_id","subaccount_id"]},{"tool":"pax_place_order","params":["side","user_id","market_id","subaccount_id","client_order_id"]},{"tool":"pax_portfolio_history","params":["to_ms","from_ms","user_id","subaccount_id"]},{"tool":"pax_portfolio_read","params":["user_id"]},{"tool":"pax_positions_list","params":["user_id","market_id","subaccount_id"]},{"tool":"pax_probability_movers","params":["top_n","category","direction"]},{"tool":"pax_resolution_evidence","params":["market_id"]},{"tool":"pax_rfq_accept","params":["rfq_id","quote_id"]},{"tool":"pax_rfq_create","params":["side","size","ttl_sec","market_id","max_price","min_price"]},{"tool":"pax_subaccount_close","params":["user_id","subaccount_id"]},{"tool":"pax_subaccount_create","params":["kind","label","user_id","currency"]},{"tool":"pax_subaccount_list","params":["user_id"]},{"tool":"pax_subaccount_transfer","params":["amount","user_id","to_subaccount_id","from_subaccount_id"]},{"tool":"pax_webhook_create","params":["label","app_id","events"]},{"tool":"pax_webhook_deliveries","params":["cursor","from_ms","webhook_id"]},{"tool":"pax_webhook_endpoints_list","params":["app_id"]}],"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."}